Comment trouver la taille d'un vecteur bidimensionnel? Jusqu'à présent, j'ai le code suivant qui ne compile pas.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector < vector <int> > v2d;
for (int x = 0; x < 3; x++)
{
for (int y = 0; y < 5; y++)
{
v2d.Push_back(vector <int> ());
v2d[x].Push_back(y);
}
}
cout<<v2d[0].size()<<endl;
cout<<v2d[0][0].size()<<endl;
return 0;
}
Pour obtenir la taille de v2d, utilisez simplement v2d.size (). Pour la taille de chaque vecteur à l'intérieur v2d, utilisez v2d [k] .size ().
Remarque: pour obtenir la taille entière de v2d
, résume la taille de chaque vecteur individuel, car chaque vecteur a sa propre taille.
Vous avez eu quelques erreurs dans votre code, que j'ai corrigées et commentées ci-dessous.
vector < vector <int> > v2d;
for (int x = 0; x < 3; x++)
{
// Move Push_back() into the outer loop so it's called once per
// iteration of the x-loop
v2d.Push_back(vector <int> ());
for (int y = 0; y < 5; y++)
{
v2d[x].Push_back(y);
}
}
cout<<v2d.size()<<endl; // Remove the [0]
cout<<v2d[0].size()<<endl; // Remove one [0]
v2d.size()
renvoie le nombre de vecteurs dans le vecteur 2D. v2d[x].size()
renvoie le nombre de vecteurs dans "row" x
. Si vous savez que le vecteur est rectangulaire (toutes les "lignes" sont de la même taille), vous pouvez obtenir la taille totale avec v2d.size() * v2d[0].size()
. Sinon, vous devez parcourir les "lignes":
int size = 0;
for (int i = 0; i < v2d.size(); i++)
size += v2d[i].size();
En guise de modification, vous pouvez également utiliser itérateurs :
int size = 0;
for (vector<vector<int> >::const_iterator it = v2d.begin(); it != v2d.end(); ++it)
size += it->size();
Le vector<vector<int>>
n'a pas de taille entière, car chaque vecteur qu'il contient a une taille indépendante. Vous devez additionner la taille de tous les vecteurs contenus.
int size = 0;
for(int i = 0; i < v2d.size(); i++)
size += v2d[i].size();