2016-10-07 2 views
1

nが大きな整数であると仮定して、C++でループなしで{1,2、...、n}でベクトルを初期化する方法はありますか?ありがとう。このような単純なC++では、値{1,2、...、n}のベクトルをループなしで初期化する方法はありますか?

+4

チェックアウト 'のstd :: iota' – krzaq

+0

テイク['std :: initializer_list'](http://en.cppreference.com/w/cpp/utility/initializer_list) –

+0

@krzaqどうぞよろしくお願いします。 –

答えて

6

std::vector<int> v(123); 
std::iota(std::begin(v), std::end(v), 1); 
2

Nがコンパイル時にわかっている場合、あなたはこのようにヘルパー関数を定義することができます。

#include<utility> 
#include<vector> 

template<std::size_t... I> 
auto gen(std::index_sequence<I...>) { 
    return std::vector<std::size_t>{ I... }; 
} 

int main() { 
    auto vec = gen(std::make_index_sequence<3>()); 
} 
+0

(現実的に)巨大な.rodataセクションになるのではないでしょうか? – krzaq

関連する問題