Maison >développement back-end >C++ >Comment puis-je initialiser efficacement un std::vector 2D en C ?

Comment puis-je initialiser efficacement un std::vector 2D en C ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-02 22:52:14798parcourir

How Can I Efficiently Initialize a 2D std::vector in C  ?

Initialiser efficacement un std::vecteur 2D

Initialiser un std::vecteur bidimensionnel peut être une tâche fastidieuse. Une approche courante consiste à créer et à ajouter manuellement des lignes au vecteur, comme illustré par le code fourni. Cependant, cette méthode peut être inefficace et sujette à des erreurs.

Une solution alternative consiste à exploiter le constructeur std::vector::vector(count, value). Ce constructeur accepte deux paramètres : le nombre de lignes souhaité et une valeur par défaut pour les éléments de chaque ligne. En spécifiant les valeurs appropriées pour ces paramètres, nous pouvons initialiser le vecteur en une seule instruction :

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, elle peut être spécifiée comme deuxième argument du constructeur :

std::vector<std::vector<int>> fog(ROW_COUNT, std::vector<int>(COLUMN_COUNT, 4));

Initialisation uniforme

C 11 a introduit l'initialisation uniforme, fournissant une autre syntaxe concise pour initialisation d'un vecteur 2D :

std::vector<std::vector<int>> fog { { 1, 1, 1 },
                                    { 2, 2, 2 } };

Cette approche utilise des accolades pour initialiser les lignes du vecteur. Chaque liste intérieure entourée d'accolades représente une ligne, avec chaque élément initialisé à la valeur spécifiée.

En employant ces techniques, nous pouvons initialiser un std::vector 2D de manière efficace et élégante, en évitant les complexités de l'initialisation manuelle. .

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn