我有以下代码为向量的所有元素赋值:
x = 100;
for (int i=0;i<vect.size();i++)
{
vect[i] = x;
}
这很简单,但我想知道STL中是否有一个功能可以做同样的事情;像for_each,但是为了分配。
答案 0 :(得分:10)
使用std::fill
:
std::fill(vect.begin(), vect.end(), 100);
注意,如果要初始化向量以具有所有相同的值,可以使用适当的构造函数:
std::vector<int> v(5, 100); // 5 elements set to 100
assign
可用于“重置向量”,但如果您只是制作向量,请使用构造函数。
答案 1 :(得分:7)
vect.assign(n, x);
n
是元素的数量。
x
是要填充的值。
与std::fill
的区别在于您为此提供了长度。 std::fill
将使用向量的先前长度。 (实际上,它会使用你告诉它的任何矢量片段,但使用vect.begin()
和vect.end()
,如上例所示,将使用前一个长度。)根据具体情况,你需要使用其中一个。