L'insertion d'éléments dans le Vecteur multidimensionnel
vector<vector<int>> sort_a;
vector<int> v2;
vector<int> v3;
for (int i=0; i<4; ++i) {
v2.push_back(i);
for (int j=0; j<4; ++j) {
v3.push_back(j);
sort_a.push_back(v2);
sort_a.push_back(v3);
}
}
Vecteur sort_a devrait être un 4x4 tableau, au lieu de la sortie est 31x1 avec beaucoup d'éléments vides, comment puis-je insérer des éléments dans un vecteur multidimensionnel ?
Vous devez vous connecter pour publier un commentaire.
Ne pas penser que c'est un multidimentional vecteur, pensez-y comme un vecteur de vecteurs.
J'ai inclus entre parenthèses dans
(vec[i])[j]
juste pour comprendre.Edit:
Si vous voulez remplir votre vecteur via
push_back
, vous pouvez créer un vecteur temporaire dans l'intérieur de la boucle, le remplir, puis push_back à votre vecteur:Cependant,
push_back
appels entraîner une baisse de code, car non seulement vous avez besoin de réaffecter votre vecteur de tous les temps, mais aussi vous devez créer un temporaire et de le copier.un
vector<vector<int>>
n'est pas la meilleure mise en œuvre pour une approche multidimensionnelle de stockage. La suite de l'implantation fonctionne pour moi.cas d'utilisation:
Cette solution est similaire à celle décrite ici.
a
dans le constructeur de l'initialiseur de la liste et ainsi éviter l'appel àrezize
. Cela pourrait éviter une ré-allocation.