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
Patricia Arquetteoriginal
2024-12-05 06:14:131038parcourir

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;

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!

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