fill函数的作用是:将一个区间的元素都赋予val值。
函数参数:fill(vec.begin(), vec.end(), val); val为将要替换的值;
fill_n函数的作用是:参数包括 : 一个迭代器,一个计数器以及一个值。
该函数从迭代器指向的元素开始,将指定数量的元素设置为给定的值。
注意: 不能在没有元素的空容器上调用fill_n函数。
在本例中,std::fill_n()用0x42填充一个缓冲区10个实例大小。然而,容器并没有为缓冲区分配大小,导致了缓冲区溢出。
#include <algorithm>
#include <vector>
void f() {
std::vector<int> v;
std::fill_n(v.begin(), 10, 0);
}
修改后代码:
在本例中,执行fill_n操作之前,需要确保vector容器容量是足够的。
#include <algorithm>
#include <vector>
void f() {
std::vector<int> v(10);
std::fill_n(v.begin(), 10, 0);
}