📜  C++ STL中的fill()和fill_n()函数(1)

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

C++ STL中的fill()和fill_n()函数

C++ STL中的fill()fill_n()函数是用于填充容器(例如数组、向量、列表等)中元素的函数。它们的作用是将指定的值赋给容器中所有指定范围的元素。

fill()

fill()函数可以将指定值赋给容器中的所有元素,罗列如下:

template< class ForwardIt, class T >
void fill( ForwardIt first, ForwardIt last, const T& value );

其中firstlast表示要赋值的元素范围,value是要赋的值。

例如,下面的代码将向量vec中所有元素赋值为5

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> vec(10);
    std::fill(vec.begin(), vec.end(), 5);
    for (auto&& i : vec) {
        std::cout << i << ' ';
    }
    return 0;
}

输出结果为:

5 5 5 5 5 5 5 5 5 5
fill_n()

fill_n()函数将指定值赋给容器中指定范围的n个元素,罗列如下:

template< class OutputIt, class Size, class T >
void fill_n( OutputIt first, Size count, const T& value );

其中first是起始位置,count表示要赋值的元素个数,value是要赋的值。

例如,下面的代码将向量vec中前5个元素赋值为8

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> vec(10);
    std::fill_n(vec.begin(), 5, 8);
    for (auto&& i : vec) {
        std::cout << i << ' ';
    }
    return 0;
}

输出结果为:

8 8 8 8 8 0 0 0 0 0

可以看到,只有前5个元素被赋值为8,其余元素保持默认值0

总结

fill()fill_n()函数是C++ STL中常用的函数,用于填充容器中的元素。它们提供了方便的接口,使得对容器进行赋值变得十分简单。需要注意的是,fill_n()函数只能填充指定数量的元素,如果要填充所有元素,应该使用fill()函数。