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

Vla*_*ala 5 c++ foreach stl

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

x = 100;

for (int i=0;i<vect.size();i++)
{
    vect[i] = x;
}
Run Code Online (Sandbox Code Playgroud)

这很简单,但我想知道STL中是否有一个功能可以做同样的事情; 类似于for_each,但是用于分配.

GMa*_*ckG 10

用途std::fill:

std::fill(vect.begin(), vect.end(), 100);
Run Code Online (Sandbox Code Playgroud)

注意,如果要初始化向量以具有所有相同的值,可以使用适当的构造函数:

std::vector<int> v(5, 100); // 5 elements set to 100
Run Code Online (Sandbox Code Playgroud)

assign 可用于"重置向量",但如果您只是制作向量,请使用构造函数.


Zif*_*fre 7

vect.assign(n, x);
Run Code Online (Sandbox Code Playgroud)

n 是元素的数量.

x 是要填补的价值.

不同之处std::fill在于您提供了此长度.std::fill将使用向量的先前长度.(实际上,它会使用你告诉它的任何矢量段,但是使用vect.begin()vect.end()上面的例子一样会使用前面的长度.)根据情况,你会想要使用其中一个.