fill 和fill_n函数是C++ Primer第十二章泛型算法部份内容,并把它们称为生成和变异算法,也就是说这两个函数只能对输入范围内已存在的元素进行操做。若是试图对空容器进行fill_n操做,会致使严重的运行错误,因此在对元素进行写入操做时要检查目标的大小是否足以存储要写入的元素。html
fill函数的做用是:将一个区间的元素都赋予val值。函数参数:fill(vec.begin(), vec.end(), val); val为将要替换的值。算法
fill_n函数的做用是:参数包括 : 一个迭代器,一个计数器以及一个值。该函数从迭代器指向的元素开始,将指定数量的元素设置为给定的值。
注意: 不能在没有元素的空容器上调用fill_n函数,可是能够经过下面的方法改进。函数
fill_n(vec.begin(),10,val);post
为了保证算法有足够的元素存储输出数据,咱们使用“插入迭代器”(insert iterator),插入迭代器是能够给基础容器添加元素的迭代器。url
使用 back_inserter 的程序须要包含头文件#include<iterator>,将上面的程序改写成:code
1 #include <iterator> 2 vector<int> vec; //定义一个空容器 3 fill_n (back_inserter(vec), 10 val);
在这个程序中,fill_n() 函数每写入一个值,都会经过back_inserter生产的插入迭代器实现。效果至关于在vec上调用push_back,在vec末尾添加10个元素。htm