Initialisation efficace des std::vectors bidimensionnels
Considérez l'extrait de code suivant :
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); }
Cette méthode L'initialisation d'un std::vector bidimensionnel semble inefficace. Une approche alternative exploitant le constructeur std::vector::vector(count, value) est disponible :
std::vector<std::vector<int>> fog( ROW_COUNT, std::vector<int>(COLUMN_COUNT)); // Defaults to zero initial value
Si une valeur par défaut autre que zéro est souhaitée, spécifiez-la comme indiqué ci-dessous :
std::vector<std::vector<int>> fog( ROW_COUNT, std::vector<int>(COLUMN_COUNT, 4));
De plus, l'initialisation uniforme introduite dans C 11 permet une initialisation concise en utilisant {}:
std::vector<std::vector<int>> fog { { 1, 1, 1 }, { 2, 2, 2 } };
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!