ハードコードされた要素でstd::vectorを初期化する最も簡単な方法は何ですか? 質問する

ハードコードされた要素でstd::vectorを初期化する最も簡単な方法は何ですか? 質問する

配列を作成して初期化するには、次のようにします。

int a[] = {10, 20, 30};

同じようにエレガントに を作成して初期化するにはどうすればよいでしょうかstd::vector?

私が知っている最善の方法は次のとおりです。

std::vector<int> ints;

ints.push_back(10);
ints.push_back(20);
ints.push_back(30);

もっと良い方法はあるでしょうか?

ベストアンサー1

コンパイラが C++11 をサポートしている場合は、次のように実行します。

std::vector<int> v = {1, 2, 3, 4};

これはGCCで利用可能ですバージョン4.4以降残念ながら、VC++ 2010 はこの点で遅れをとっているようです。

あるいは、ブースト.割り当てライブラリは非マクロマジックを使用して次のことを可能にします:

#include <boost/assign/list_of.hpp>
...
std::vector<int> v = boost::assign::list_of(1)(2)(3)(4);

または:

#include <boost/assign/std/vector.hpp>
using namespace boost::assign;
...
std::vector<int> v;
v += 1, 2, 3, 4;

ただし、これにはいくらかのオーバーヘッド (基本的に、内部でlist_ofを構築する)があるため、パフォーマンスが重要なコードの場合は、Yacoby の言うとおりに実行した方がよいことに注意してください。std::deque

おすすめ記事