📅  最后修改于: 2023-12-03 14:39:51.825000             🧑  作者: Mango
fill()
函数是C++ STL中的一个算法,它用特定的值填充一个范围内的元素。它有两个重载形式:
template<class ForwardIt, class T>
void fill( ForwardIt first, ForwardIt last, const T& value );
template<class OutputIt, class Size, class T>
OutputIt fill_n( OutputIt first, Size count, const T& value );
第一个版本接受两个迭代器(first和last),以及一个值(value),它将范围[first,last)内的所有元素都设置为value。
第二个版本接受一个输出迭代器(first),一个元素数量(count),以及一个值(value),它将[first,first+count)内的所有元素都设置为value,并返回指向最后一个被修改元素的迭代器。
接下来看一个例子。考虑下面这个数组:
int arr[5] = { 0, 1, 2, 3, 4 };
我们想用5来填充整个数组。使用fill()
函数很容易做到:
#include <algorithm>
#include <iostream>
int main()
{
int arr[5] = { 0, 1, 2, 3, 4 };
std::fill(std::begin(arr), std::end(arr), 5);
for(int i = 0; i < 5; i++)
{
std::cout << arr[i] << " ";
}
std::cout << '\n';
return 0;
}
运行这个程序,我们得到输出:
5 5 5 5 5
即,数组里的所有元素都被成功填充为了5。
类似地,我们可以使用fill_n()
函数把数组的前三个元素设置成8:
#include <algorithm>
#include <iostream>
int main()
{
int arr[5] = { 0, 1, 2, 3, 4 };
std::fill_n(std::begin(arr), 3, 8);
for(int i = 0; i < 5; i++)
{
std::cout << arr[i] << " ";
}
std::cout << '\n';
return 0;
}
这个程序的输出将会是:
8 8 8 3 4
即,数组的前三个元素都被成功填充为了8。注意,我们只填充了前三个元素,因此结果中后面的两个元素仍然是3和4。