Zweidimensionale std::vectors effizient initialisieren
Betrachten Sie den folgenden Codeausschnitt:
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); }
Diese Methode Die Initialisierung eines zweidimensionalen std::vector erscheint ineffizient. Ein alternativer Ansatz, der den Konstruktor std::vector::vector(count, value) nutzt, ist verfügbar:
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, geben Sie ihn wie unten gezeigt an:
std::vector<std::vector<int>> fog( ROW_COUNT, std::vector<int>(COLUMN_COUNT, 4));
Darüber hinaus ermöglicht die in C 11 eingeführte einheitliche Initialisierung eine präzise Initialisierung mit {}:
std::vector<std::vector<int>> fog { { 1, 1, 1 }, { 2, 2, 2 } };
Das obige ist der detaillierte Inhalt vonWas ist der effizienteste Weg, einen 2D-std::vector in C zu initialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!