Initialisation optimale d'un std :: vector bidimensionnel
L'initialisation de std :: vectors multidimensionnels présente certains défis, en particulier lorsque l'on vise un std :: vectors multidimensionnel code. Prenons l'exemple donné :
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 approche nécessite plusieurs boucles imbriquées et semble quelque peu fastidieuse. Une solution plus optimale existe en utilisant le constructeur std::vector::vector(count, value) :
std::vector<std::vector<int>> fog( ROW_COUNT, std::vector<int>(COLUMN_COUNT)); // Defaults to zero initial value
Dans ce cas, le constructeur prend une taille initiale et une valeur par défaut. Si une valeur par défaut différente est souhaitée, elle peut être spécifiée comme suit :
std::vector<std::vector<int>> fog( ROW_COUNT, std::vector<int>(COLUMN_COUNT, 4));
De plus, l'utilisation de l'initialisation uniforme introduite dans C 11 fournit une méthode concise et lisible pour l'initialisation vectorielle :
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!