我可以在初始化列表中使用10个相同的整数初始化STL向量吗?

时间:2012-04-19 22:27:48

标签: c++ stl constructor initializer-list

我可以在初始化列表中用10个相同的整数初始化STL向量吗?到目前为止,我的尝试都让我失望。

6 个答案:

答案 0 :(得分:117)

使用适当的构造函数,该构造函数采用大小和默认值。

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

答案 1 :(得分:33)

我认为你的意思是:

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

答案 2 :(得分:7)

如果你正在使用C ++ 11和GCC,你可以这样做:

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

它被称为远程初始化,是一个仅限GCC的扩展。

答案 3 :(得分:5)

您可以使用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};

答案 4 :(得分:4)

C ++ 0x支持向量的初始化列表。如果你用C ++ 98编译

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

答案 5 :(得分:0)

你可以发布你在做什么

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

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