web-dev-qa-db-fra.com

Différence entre vecteur <int> V [] et vecteur <vecteur <int>> V

vector <int> V[] et vector< vector<int> > V sont tous deux tableau 2D

Mais quelle est la différence entre leuret où nous l'utilisons à des endroits différents? Veuillez donner une brève explication.

15
Sakib Ahammed

vector<int> V[] est un tableau de vecteurs.

vector< vector<int> > V est un vecteur de vecteurs.

Les tableaux utilisent codage de style C, les vecteurs sont codage de style C++.

Citant cplusplus.com ,

Les vecteurs sont des conteneurs de séquence représentant des tableaux pouvant changer de taille .

Tout comme les tableaux, les vecteurs utilisent emplacements de stockage contigus pour leurs éléments , Ce qui signifie que leurs éléments sont également accessibles à l'aide de Décalages sur les pointeurs normaux vers ses éléments, et aussi efficacement que dans les tableaux . Mais contrairement aux tableaux, leur taille peut changer dynamiquement, , Leur stockage étant géré automatiquement par le conteneur.

TL; DR :

Lorsque vous souhaitez utiliser un nombre fixe d'éléments std::vector, vous pouvez utiliser vector <int> V[].

Lorsque vous souhaitez utiliser un tableau dynamique sur std::vector, vous pouvez utiliser vector< vector<int> > V.

30
shauryachats

Une différence serait que, bien que les deux puissent être initialisés de la même manière, par ex. 

vector<int> V1[]        {{1,2,3}, {4,5,6}};
vector<vector<int>> V2  {{1,2,3}, {4,5,6}};

et accédé

cout << V1[0].back() << endl;
cout << V2[0].back() << endl;

la V1 ne peut pas grandir. Vous ne pouvez pas créer V1.Push_back (...) car ce n'est pas un objet vectoriel. C'est juste un tableau. La seconde est dynamique. Vous pouvez le cultiver à votre guise.

12
Marcin

le vecteur V [] est juste un tableau fixe; et ainsi vous pouvez ajouter/modifier seulement jusqu’à la limite supérieure. Ce n'est pas un vecteur en soi, et a donc une limite de taille fixe. Cependant, le vecteur <vecteur> V est un vecteur dynamique et sa taille peut être augmentée de manière dynamique.

0
Arvind Sharma