Heim >Backend-Entwicklung >C++ >Wie kann ich einen 2D-std::vector in C effizient initialisieren?

Wie kann ich einen 2D-std::vector in C effizient initialisieren?

Linda Hamilton
Linda HamiltonOriginal
2024-12-02 22:52:14797Durchsuche

How Can I Efficiently Initialize a 2D std::vector in C  ?

Effizientes Initialisieren eines zweidimensionalen std::vector

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn