for_each但是用于将每个元素设置为C ++中的值

时间:2010-04-05 23:59:06

标签: c++ stl foreach

我有以下代码为向量的所有元素赋值:

x = 100;

for (int i=0;i<vect.size();i++)
{
    vect[i] = x;
}

这很简单,但我想知道STL中是否有一个功能可以做同样的事情;像for_each,但是为了分配。

2 个答案:

答案 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(),如上例所示,将使用前一个长度。)根据具体情况,你需要使用其中一个。