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:特定の値に初期化する

使用するとfillarray をすばやく初期化できます。

例

#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
    

    コードの解説:

    • fillarray を既知の状態にすばやくリセットできます。
    • これは、同じバッファを複数回使用する必要がある場合に便利です。

    例4:fill と std::generate を組み合わせて使用する

    fillSTL アルゴリズムと組み合わせて使用します。

    例

    #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 << "2倍後: ";
        for(int n : numbers) std::cout << n << " ";
        std::cout << std::endl;

        return 0;
    }

    コードの解説:

    • fill初期値を設定するために使用します。
    • その後、ループやアルゴリズムと組み合わせてさらに処理を行うことができます。

    C++ 容器类 <array>C++ コンテナクラス <array>

    その他の拡張