Maison > développement back-end > C++ > Quelle est la manière la plus efficace d'initialiser un vecteur 2D en C ?

Quelle est la manière la plus efficace d'initialiser un vecteur 2D en C ?

Patricia Arquette
Libérer: 2024-12-05 06:14:13
original
1045 Les gens l'ont consulté

What's the Most Efficient Way to Initialize a 2D Vector in 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;
Copier après la connexion

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);
}
Copier après la connexion

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
);
Copier après la connexion

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
);
Copier après la connexion

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 } };
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal