C++ <array> fill-Funktion
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 auf
value。 - 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 <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:
numbers.fill(0)Setzt alle 5 Elemente auf 0.- 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 <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 <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 <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.
Weitere Erweiterungen