C++ <array> fill-Funktion

C++ Container-Klasse <array>


fillwird in array verwendet, umAlle Elemente zu füllenEine Funktion, die schnell alle Elemente auf denselben Wert setzen kann.

fillist eine Memberfunktion der Container-Klasse, die verwendet wird, umAlle Elemente im Container auf den angegebenen Wert zu setzen.Dies ist eine O(n)-Operation, die das Iterieren über alle Elemente erfordert.

fillIst eine Abkürzung zum Initialisieren oder Zurücksetzen von array.

Wortdefinitionen: fillBedeutet "fill", d. h., alle Elemente auf einen angegebenen Wert zu setzen.


Grundlegende Syntax und Parameter

fillIst eine Memberfunktion der Container-Klasse, die einen angegebenen Füllwert erfordert.

Syntaxformat

void fill(const T& value);

Parameterbeschreibung

  • Parameter: value
    • Typ: gleich dem Elementtyp des Containers
    • Beschreibung: Der Wert, mit dem alle Elemente gefüllt werden.

Funktionsbeschreibung

  • Rückgabewert: void(Kein Rückgabewert).
  • Effekt: Setzt jedes Element im Container aufvalue。
  • Hinweis: fillmodifiziert alle Elemente im Container.

Beispiel

Lass uns das anhand einer Reihe von Beispielen gründlich meistern.fillVerwendung.

Beispiel 1: Grundlegende Verwendung - Füllen mit demselben Wert

Beispiel

#include <iostream>
#include <array>

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

    std::cout << "Vor dem Füllen: ";
    for(int n : numbers) {
        std::cout << n << " ";
    }
    std::cout << std::endl;

    // Alle Elemente mit 0 füllen
    numbers.fill(0);

    std::cout << "Nach dem Füllen: ";
    for(int n : numbers) {
        std::cout << n << " ";
    }
    std::cout << std::endl;

    return 0;
}

Erwartetes Ausführungsergebnis:

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

Codeanalyse:

  1. numbers.fill(0)Setzt alle 5 Elemente auf 0.
  2. Dies ist eine O(n)-Operation, die alle Elemente durchläuft und Werte zuweist.

Beispiel 2: Initialisierung mit einem bestimmten Wert

Nutzungfillkann schnell ein Array initialisieren.

Beispiel

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

int main() {
    // Erstellen und auf -1 initialisieren
    std::array<int, 10> scores;
    scores.fill(-1);

    std::cout << "Initialisiert auf -1: ";
    for(int s : scores) {
        std::cout << s << " ";
    }
    std::cout << std::endl;

    // Erstellen und auf leeren String initialisieren
    std::array<std::string, 3> names;
    names.fill("Unbekannt");

    std::cout << "Initialisiert auf Unbekannt: ";
    for(const auto& n : names) {
        std::cout << n << " ";
    }
    std::cout << std::endl;

    return 0;
}

Erwartetes Ausführungsergebnis:

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

Codeanalyse:

  • fillKann verwendet werden, um schnell ein Array eines beliebigen Typs zu initialisieren.
  • Für Ganzzahlen wird häufig 0 oder -1 verwendet; für Zeichenketten wird häufig eine leere Zeichenkette oder ein bestimmter Platzhalter verwendet.
  • Beispiel 3: Zurücksetzen des Arrays

    fillkann verwendet werden, um das Array in seinen Ausgangszustand zurückzusetzen.

    Beispiel

    #include <iostream>
    #include <array>

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

        // Initialisieren auf 1-5
        for(int i = 0; i < 5; ++i) {
            buffer[i] = i + 1;
        }

        std::cout << "Anfangsdaten: ";
        for(int n : buffer) std::cout << n << " ";
        std::cout << std::endl;

        // Simuliere das Zurücksetzen nach Verwendung von buffer
        buffer.fill(0);

        std::cout << "Nach dem Zurücksetzen: ";
        for(int n : buffer) std::cout << n << " ";
        std::cout << std::endl;

        return 0;
    }

    Erwartetes Ausführungsergebnis:

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

    Codeanalyse:

    • fillKann das Array schnell in einen bekannten Zustand zurücksetzen.
    • Dies ist nützlich, wenn derselbe Puffer mehrmals verwendet werden muss.

    Beispiel 4: Verwenden von fill mit std::generate

    fillin Verbindung mit STL-Algorithmen verwendet.

    Beispiel

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

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

        // fill verwenden, um Anfangswerte zu befüllen
        numbers.fill(1);

        std::cout << "Nach fill 1: ";
        for(int n : numbers) std::cout << n << " ";
        std::cout << std::endl;

        // Jedes Element inkrementieren
        for(auto& n : numbers) {
            n *= 2;
        }

        std::cout << "Nach Verdopplung: ";
        for(int n : numbers) std::cout << n << " ";
        std::cout << std::endl;

        return 0;
    }

    Codeanalyse:

    • fillzum Festlegen von Anfangswerten verwendet.
    • Anschließend kann es mit Schleifen oder Algorithmen weiterverarbeitet werden.

    C++ Container-Klasse <array>

    Weitere Erweiterungen