std::vector<int> v;
for (size_t i=0; i<100; i++)
v.push_back(0);
正如您所看到的,它对每个元素都重复相同的值。有没有一种方法来初始化一个矢量没有一个循环?如果不是,哪种方法最快?如何在没有周期的情况下初始化std :: vector?
在此先感谢您的帮助。
std::vector<int> v;
for (size_t i=0; i<100; i++)
v.push_back(0);
正如您所看到的,它对每个元素都重复相同的值。有没有一种方法来初始化一个矢量没有一个循环?如果不是,哪种方法最快?如何在没有周期的情况下初始化std :: vector?
在此先感谢您的帮助。
您可以使用构造函数来获取大小。这将对所有元素进行初始化。对于int
这意味着零初始化:
std::vector<int> v(100); // 100 elements with value 0
如果你需要一个不同的号码,那么你可以传递第二个参数与所需的值:
std::vector<int> v(100, 42); // 100 elements with value 42
,如果你要考虑从@juanchopanza答案初始化施工;但如果您想为代码的任何其他部分中的vector
中的所有记录设置相同的值,则可以考虑采用std::fill
。
你不想这样做。 'v.resize(value)'或'v.insert(v.end(),n,value)'是更好的解决方案。 –
@JamesKanze为什么? – user2485710
通常的原因是:如果没有其他原因,它总是更喜欢容器的成员函数,否则会更有效率。 (在这种情况下:'resize'或'insert'永远不会重复分配一次,'std :: fill'可以做很多事情。) –