53

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

4

6 回答 6

150

使用适当的构造函数,它接受一个大小和一个默认值。

int number_of_elements = 10;
int default_value = 1;
std::vector<int> vec(number_of_elements, default_value);
于 2012-04-19T22:34:33.177 回答
37

我想你的意思是:

struct test {
   std::vector<int> v;
   test(int value) : v( 100, value ) {}
};
于 2012-04-20T00:51:11.940 回答
9

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

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

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

于 2012-04-19T22:33:23.190 回答
8

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

int number_of_elements = 10;
int default_value = 1;
std::vector<int> vec(number_of_elements, default_value);
于 2012-04-20T00:54:06.693 回答
5

您可以使用std::vector构造函数来做到这一点:

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

这需要count并被value重复。

如果你想使用初始化列表,你可以写:

const int x = 5;
std::vector<int> vec {x, x, x, x, x, x, x, x, x, x};
于 2012-04-19T22:34:31.657 回答
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;
}
于 2012-04-19T22:32:21.647 回答