web-dev-qa-db-ja.com

イニシャライザリストで同じ整数の10でSTLベクトルを初期化できますか?

イニシャライザリストで同じ整数の10でSTLベクトルを初期化できますか?これまでの私の試みは失敗しました。

40
Xavier

私はあなたがこれを意味すると思う:

struct test {
   std::vector<int> v;
   test(int value) : v( 100, value ) {}
};

適切なコンストラクターを使用します。これは、サイズとデフォルト値を取ります。

int number_of_elements = 10;
int default_value = 1;
std::vector<int> vec(number_of_elements, default_value);
118
Ed S.

C++ 11とGCCを使用している場合、これを行うことができます。

vector<int> myVec () {[0 ... 99] = 1};

これは範囲初期化と呼ばれ、GCC専用の拡張機能です。

7

Vectorの初期化リストは、C++ 0xからサポートされています。 C++ 98でコンパイルした場合

int number_of_elements = 10;
int default_value = 1;
std::vector<int> vec(number_of_elements, default_value);
6
Agus

std::vectorコンストラクターでそれを行うことができます:

vector(size_type count, 
                 const T& value,
                 const Allocator& alloc = Allocator());

countvalueを繰り返す必要があります。

初期化リストを使用する場合は、次のように記述できます。

const int x = 5;
std::vector<int> vec {x, x, x, x, x, x, x, x, x, x};
5
Rafał Rawicki

あなたがしていることを投稿できますか

 int i = 100;
vector<int> vInts2 (10, i);

vector<int>::iterator iter;
for(iter = vInts2.begin(); iter != vInts2.end(); ++iter)
{
    cout << " i " << (*iter) << endl;
}
0
nate_weldon