Das Initialisieren eines zweidimensionalen std::vector kann eine umständliche Aufgabe sein. Ein gängiger Ansatz besteht darin, Zeilen manuell zu erstellen und an den Vektor anzuhängen, wie im bereitgestellten Code veranschaulicht. Diese Methode kann jedoch ineffizient und fehleranfällig sein.
Eine alternative Lösung besteht darin, den Konstruktor std::vector::vector(count, value) zu nutzen. Dieser Konstruktor akzeptiert zwei Parameter: die gewünschte Anzahl von Zeilen und einen Standardwert für die Elemente jeder Zeile. Durch Angabe der entsprechenden Werte für diese Parameter können wir den Vektor in einer einzigen Anweisung initialisieren:
std::vector<std::vector<int>> fog(ROW_COUNT, std::vector<int>(COLUMN_COUNT)); // Defaults to zero initial value
Wenn ein anderer Standardwert als Null gewünscht wird, kann er als zweites Argument für den Konstruktor angegeben werden:
std::vector<std::vector<int>> fog(ROW_COUNT, std::vector<int>(COLUMN_COUNT, 4));
Einheitliche Initialisierung
C 11 führte eine einheitliche Initialisierung ein und stellte eine weitere prägnante Syntax für bereit Initialisieren eines 2D-Vektors:
std::vector<std::vector<int>> fog { { 1, 1, 1 }, { 2, 2, 2 } };
Dieser Ansatz verwendet geschweifte Klammern, um Zeilen innerhalb des Vektors zu initialisieren. Jede in geschweifte Klammern eingeschlossene Liste stellt eine Zeile dar, wobei jedes Element mit dem angegebenen Wert initialisiert wird.
Durch den Einsatz dieser Techniken können wir einen 2D-std::vector effizient und elegant initialisieren und so die Komplexität einer manuellen Initialisierung vermeiden .
Das obige ist der detaillierte Inhalt vonWie kann ich einen 2D-std::vector in C effizient initialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!