现在位置: 首页 > C++ 教程 > 正文

C++ <array> fill 函数

C++ 容器类 <array> C++ 容器类 <array>


fill 是 array 中用于填充所有元素的函数,可以快速将所有元素设置为同一个值。

fill 是容器类的成员函数,用于将容器中的所有元素设置为指定的值。这是一个 O(n) 操作,需要遍历所有元素。

fill 是初始化或重置 array 的快捷方式。

单词释义fill 表示"填充",即将所有元素设置为指定值。


基本语法与参数

fill 是容器类的成员函数,需要指定填充值。

语法格式

void fill(const T& value);

参数说明

  • 参数value
    • 类型: 与容器元素类型相同
    • 描述: 要填充到所有元素的 值。

函数说明

  • 返回值void(无返回值)。
  • 效果: 将容器中的每个元素都设置为 value
  • 注意fill 会修改容器中的所有元素。

实例

让我们通过一系列例子,彻底掌握 fill 的用法。

示例 1:基础用法 - 填充相同值

实例

#include <iostream>
#include <array>

int main() {
    std::array<int, 5> numbers = {1, 2, 3, 4, 5};

    std::cout << "填充前: ";
    for(int n : numbers) {
        std::cout << n << " ";
    }
    std::cout << std::endl;

    // 用 0 填充所有元素
    numbers.fill(0);

    std::cout << "填充后: ";
    for(int n : numbers) {
        std::cout << n << " ";
    }
    std::cout << std::endl;

    return 0;
}

运行结果预期:

填充前: 1 2 3 4 5
填充后: 0 0 0 0 0

代码解析:

  1. numbers.fill(0) 将所有 5 个元素都设置为 0。
  2. 这是一个 O(n) 操作,遍历所有元素并赋值。

示例 2:初始化为特定值

使用 fill 可以快速初始化 array。

实例

#include <iostream>
#include <array>
#include <string>

int main() {
    // 创建并初始化为 -1
    std::array<int, 10> scores;
    scores.fill(-1);

    std::cout << "初始化为 -1: ";
    for(int s : scores) {
        std::cout << s << " ";
    }
    std::cout << std::endl;

    // 创建并初始化为空字符串
    std::array<std::string, 3> names;
    names.fill("Unknown");

    std::cout << "初始化为 Unknown: ";
    for(const auto& n : names) {
        std::cout << n << " ";
    }
    std::cout << std::endl;

    return 0;
}

运行结果预期:

初始化为 -1: -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
初始化为 Unknown: Unknown Unknown Unknown

代码解析:

  • fill 可以用于快速初始化任何类型的 array。
  • 对于整数常用 0 或 -1,对于字符串常用空字符串或特定占位符。
  • 示例 3:重置数组

    fill 可以用于重置数组到初始状态。

    实例

    #include <iostream>
    #include <array>

    int main() {
        std::array<int, 5> buffer;

        // 初始化为 1-5
        for(int i = 0; i < 5; ++i) {
            buffer[i] = i + 1;
        }

        std::cout << "初始数据: ";
        for(int n : buffer) std::cout << n << " ";
        std::cout << std::endl;

        // 模拟使用 buffer 后重置
        buffer.fill(0);

        std::cout << "重置后: ";
        for(int n : buffer) std::cout << n << " ";
        std::cout << std::endl;

        return 0;
    }

    运行结果预期:

    初始数据: 1 2 3 4 5
    重置后: 0 0 0 0 0
    

    代码解析:

    • fill 可以快速重置 array 到已知状态。
    • 这在需要多次使用同一缓冲区时很有用。

    示例 4:使用 fill 配合 std::generate

    fill 与 STL 算法配合使用。

    实例

    #include <iostream>
    #include <array>
    #include <algorithm>

    int main() {
        std::array<int, 10> numbers;

        // 使用 fill 填充初始值
        numbers.fill(1);

        std::cout << "填充 1 后: ";
        for(int n : numbers) std::cout << n << " ";
        std::cout << std::endl;

        // 递增每个元素
        for(auto& n : numbers) {
            n *= 2;
        }

        std::cout << "翻倍后: ";
        for(int n : numbers) std::cout << n << " ";
        std::cout << std::endl;

        return 0;
    }

    代码解析:

    • fill 用于设置初始值。
    • 之后可以配合循环或算法进行进一步处理。

    C++ 容器类 <array> C++ 容器类 <array>