Heim >Backend-Entwicklung >C++ >Wie kann ich die Initialisierung eines 2D std::vector in C optimieren?
Optimale Initialisierung eines zweidimensionalen std::vector
Die Initialisierung mehrdimensionaler std::vectors stellt bestimmte Herausforderungen dar, insbesondere wenn es um Effizienz geht Code. Betrachten Sie das gegebene Beispiel:
std::vector<std::vector<int>> fog; for (int i = 0; i < A_NUMBER; i++) { std::vector<int> fogRow; for (int j = 0; j < OTHER_NUMBER; j++) { fogRow.push_back(0); } fog.push_back(fogRow); }
Dieser Ansatz erfordert mehrere verschachtelte Schleifen und erscheint etwas mühsam. Eine optimalere Lösung gibt es mit dem Konstruktor std::vector::vector(count, value):
std::vector<std::vector<int>> fog( ROW_COUNT, std::vector<int>(COLUMN_COUNT)); // Defaults to zero initial value
In diesem Fall nimmt der Konstruktor eine Anfangsgröße und einen Standardwert an. Wenn ein anderer Standardwert gewünscht wird, kann dieser wie folgt angegeben werden:
std::vector<std::vector<int>> fog( ROW_COUNT, std::vector<int>(COLUMN_COUNT, 4));
Darüber hinaus bietet die Verwendung der in C 11 eingeführten einheitlichen Initialisierung eine präzise und lesbare Methode für die Vektorinitialisierung:
std::vector<std::vector<int>> fog { { 1, 1, 1 }, { 2, 2, 2 } };
Das obige ist der detaillierte Inhalt vonWie kann ich die Initialisierung eines 2D std::vector in C optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!