Différence entre vector <int> V[] et vector< vector<int> > V
vector <int> V[]
et vector< vector<int> > V
les deux sont tableau 2D.
Mais qu'est-ce que le différence entre leur et où nous utilisons ce dans différents endroit?? Veuillez donner une brève explication.
- Aucune de ces est un tableau 2d. Les deux sont des tableaux de tableaux. La seule syntaxe disponible en C++ pour un tableau 2d est celui hérité de la C. (Parce que
std::array
peut avoir de remplissage, voir stackoverflow.com/q/19103244/103167) - Comment peut-or-insigne de C++ grok appeler l'une de ces deux un "tableau de tableaux"?
- Car l'expression anglaise "tableau d'" n'est pas particulièrement précis. Si je dis "j'ai un tableau de Widgets", je ne vous ai pas parlé si je suis de la gestion de cette matrice avec un pointeur intelligent / wrapper collection, ou si j'essaie de tenir les Widgets directement, via la composition, par référence (à l'aide d'un pointeur, bien sûr, puisque vous ne pouvez pas avoir une collection dont le type d'élément est un C++ type de référence). De sorte que tous
Widget[N]
,std::unique_ptr<Widget[]>
,std::vector<Widget>
,std::vector<WidgetBase*>
,std::vector<std::unique_ptr<Widget>>
sont, en anglais, "tableau de Widget". Pour être plus précis, disons le type - Dans ce cas, il y a certainement de multiples tableaux de
int
, (l'une tenue par chaquestd::vector<int>
), et ceux-ci sont conservés dans un autre tableau. - Je m'attends à tout collègue de ne pas appeler un
std::vector<>
un "tableau", jamais. C'est tout ce que je dis. - De style C les tableaux sont également fait des tableaux de tableaux
Vous devez vous connecter pour publier un commentaire.
vector<int> V[]
est un tableau de vecteurs.vector< vector<int> > V
est un vecteur de vecteurs.À l'aide de tableaux sont C-style de codage, à l'aide de vecteurs sont C++-style de codage.
Citant cplusplus.com ,
TL;DR:
Quand vous voulez travailler avec un nombre fixe de
std::vector
éléments, vous pouvez utiliservector <int> V[]
.Quand vous voulez travailler avec un tableau dynamique de
std::vector
, vous pouvez utiliservector< vector<int> > V
.std::array<vector<int>,n>
avecn
la longueur du tableau surstd::array<vector>[]
Le dernier est un mismash deC
style etC++
style de codage.Seule différence serait que, bien que les deux peuvent être initialisés de la même façon, par exemple,
et accessible
la V1 ne peut pas se développer. Vous ne pouvez pas faire V1.push_back(...) que ce n'est pas un objet vectoriel. Son juste un tableau. Second est dynamique. Vous pouvez le cultiver comme vous s'il vous plaît.
vecteur V[] est juste un tableau fixe; et donc vous pouvez ajouter/modifier seulement jusqu'à la limite supérieure. Ce n'est pas un vecteur de soi, et donc a une taille fixe de limite.
Cependant vector< vector > V est un vecteur dynamique et sa taille peut être augmentée de façon dynamique.