简体   繁体   中英

Can I initialize an STL vector with 10 of the same integer in an initializer list?

Can I initialize an STL vector with 10 of the same integer in an initializer list? My attempts so far have failed me.

Use the appropriate constructor, which takes a size and a default value.

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

I think you mean this:

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

If you're using C++11 and on GCC, you could do this:

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

It's called ranged initialization and is a GCC-only extension.

The initialization list for vector is supported from C++0x. If you compiled with C++98

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

You can do that with std::vector constructor:

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

Which takes count and value to be repeated.

If you want to use initializer lists you can write:

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

can you post what you are doing

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM