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.
vector<int> V[]
est un tableau de vecteurs.
vector< vector<int> > V
est un vecteur de vecteurs.
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
.
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.
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.