Maison >développement back-end >C++ >Quelle est la manière la plus efficace d'initialiser un vecteur 2D en C ?
Initialisation efficace d'un vecteur bidimensionnel à l'aide de constructeurs et d'une initialisation uniforme
Considérez l'extrait de code suivant :
std::vector< std::vector<int> > fog;
Pour initialiser ce vecteur bidimensionnel, de nombreux développeurs utilisent une approche manuelle impliquant des boucles :
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); }
Cependant, cette technique d'initialisation manuelle peut ne pas être optimale. Une approche alternative consiste à utiliser le constructeur std::vector::vector(count, value), qui accepte une taille initiale et une valeur par défaut :
std::vector<std::vector<int>> fog( ROW_COUNT, // Specifies the number of rows std::vector<int>(COLUMN_COUNT) // Initializes each row with a default value of 0 );
Si une valeur par défaut autre que zéro est souhaitée, telle que comme 4, la syntaxe suivante peut être utilisée :
std::vector<std::vector<int>> fog( ROW_COUNT, std::vector<int>(COLUMN_COUNT, 4) // Initializes each row with a default value of 4 );
De plus, C 11 a introduit l'initialisation uniforme, fournissant une méthode concise pour initialiser les conteneurs. L'initialisation uniforme utilise des accolades ({}) pour définir les valeurs initiales :
std::vector<std::vector<int>> fog { { 1, 1, 1 }, { 2, 2, 2 } };
En utilisant ces constructeurs et techniques d'initialisation uniforme, les développeurs peuvent initialiser efficacement des vecteurs bidimensionnels, améliorant ainsi la lisibilité et les performances du code.
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!