Fonction fill de <array> en C++

C++ classe conteneur <array>


fillest utilisée dans le tableau pourRemplir tous les élémentsUne fonction qui peut rapidement définir tous les éléments à la même valeur.

fillest une fonction membre de la classe conteneur, utilisée pourDéfinir tous les éléments du conteneur à la valeur spécifiée.Il s'agit d'une opération O(n) qui nécessite de parcourir tous les éléments.

fillEst un raccourci pour initialiser ou réinitialiser le tableau.

Définitions de mots: fillSignifie "fill", c'est-à-dire définir tous les éléments à une valeur spécifiée.


Syntaxe de base et paramètres

fillEst une fonction membre de la classe conteneur, nécessitant une valeur de remplissage spécifiée.

Format de syntaxe

void fill(const T& value);

Description des paramètres

  • Paramètre: value
    • Type : identique au type d'élément du conteneur
    • Description : La valeur à remplir dans tous les éléments.

Description de la fonction

  • Valeur de retour: void(Aucune valeur de retour).
  • Effet: Définir chaque élément du conteneur àvalue。
  • Remarque: fillmodifie tous les éléments du conteneur.

Exemple

Maîtrisons à fond à travers une série d'exemples.fillUtilisation.

Exemple 1 : Utilisation de base - remplissage avec la même valeur

Exemple

#include <iostream>
#include <array>

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

    std::cout << "Before fill: ";
    for(int n : numbers) {
        std::cout << n << " ";
    }
    std::cout << std::endl;

    // Remplir tous les éléments avec 0
    numbers.fill(0);

    std::cout << "After fill: ";
    for(int n : numbers) {
        std::cout << n << " ";
    }
    std::cout << std::endl;

    return 0;
}

Résultat d'exécution attendu :

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

Analyse du code :

  1. numbers.fill(0)Définir les 5 éléments à 0.
  2. Il s'agit d'une opération O(n), qui parcourt tous les éléments et leur affecte des valeurs.

Exemple 2 : Initialisation à une valeur spécifique

Utilisationfillpeut rapidement initialiser un tableau.

Exemple

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

int main() {
    // Créer et initialiser à -1
    std::array<int, 10> scores;
    scores.fill(-1);

    std::cout << "Initialisé à -1 : ";
    for(int s : scores) {
        std::cout << s << " ";
    }
    std::cout << std::endl;

    // Créer et initialiser à une chaîne vide
    std::array<std::string, 3> names;
    names.fill("Inconnu");

    std::cout << "Initialisé à Inconnu : ";
    for(const auto& n : names) {
        std::cout << n << " ";
    }
    std::cout << std::endl;

    return 0;
}

Résultat d'exécution attendu :

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

Analyse du code :

  • fillPeut être utilisé pour initialiser rapidement un tableau de n'importe quel type.
  • Pour les entiers, on utilise couramment 0 ou -1 ; pour les chaînes, on utilise couramment une chaîne vide ou un espace réservé spécifique.
  • Exemple 3 : Réinitialisation du tableau

    fillpeut être utilisé pour réinitialiser le tableau à son état initial.

    Exemple

    #include <iostream>
    #include <array>

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

        // Initialiser de 1 à 5
        for(int i = 0; i < 5; ++i) {
            buffer[i] = i + 1;
        }

        std::cout << "Données initiales : ";
        for(int n : buffer) std::cout << n << " ";
        std::cout << std::endl;

        // Simuler la réinitialisation après utilisation de buffer
        buffer.fill(0);

        std::cout << "Après réinitialisation : ";
        for(int n : buffer) std::cout << n << " ";
        std::cout << std::endl;

        return 0;
    }

    Résultat d'exécution attendu :

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

    Analyse du code :

    • fillPeut rapidement réinitialiser le tableau à un état connu.
    • Ceci est utile lorsque le même tampon doit être utilisé plusieurs fois.

    Exemple 4 : Utilisation de fill avec std::generate

    fillutilisé conjointement avec les algorithmes STL.

    Exemple

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

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

        // Utiliser fill pour remplir les valeurs initiales
        numbers.fill(1);

        std::cout << "Après fill 1 : ";
        for(int n : numbers) std::cout << n << " ";
        std::cout << std::endl;

        // Incrémenter chaque élément
        for(auto& n : numbers) {
            n *= 2;
        }

        std::cout << "Après doublement : ";
        for(int n : numbers) std::cout << n << " ";
        std::cout << std::endl;

        return 0;
    }

    Analyse du code :

    • fillutilisé pour définir les valeurs initiales.
    • Ensuite, il peut être traité davantage avec des boucles ou des algorithmes.

    C++ classe conteneur <array>

    autres extensions