Fonction fill de <array> en C++
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 <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 :
numbers.fill(0)Définir les 5 éléments à 0.- 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 <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 <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 <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.
autres extensions