📜  C++ STL中的fill()函数与示例(1)

📅  最后修改于: 2023-12-03 14:39:51.825000             🧑  作者: Mango

C++ STL中的fill()函数

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。