2次元ベクトルのサイズを確認するにはどうすればよいですか?これまでのところ、コンパイルできない次のコードがあります。
#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;
}
v2dのサイズを取得するには、単にv2d.size()を使用します。 v2d内の各ベクトルのサイズについては、v2d [k] .size()を使用します。
注:v2d
の全体のサイズを取得するには、各ベクトルに独自のサイズがあるため、各ベクトルのサイズを合計します。
コードにエラーがありましたが、これを修正して以下にコメントしました。
_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()
は、2Dベクトルのベクトルの数を返します。 v2d[x].size()
は、「行」のベクトルの数を返しますx
。ベクトルが長方形(すべての「行」が同じサイズ)であることがわかっている場合は、v2d.size() * v2d[0].size()
を使用して合計サイズを取得できます。それ以外の場合は、「行」をループする必要があります。
_int size = 0;
for (int i = 0; i < v2d.size(); i++)
size += v2d[i].size();
_
変更として、 iterators を使用することもできます:
_int size = 0;
for (vector<vector<int> >::const_iterator it = v2d.begin(); it != v2d.end(); ++it)
size += it->size();
_
vector<vector<int>>
内の各ベクトルには独立したサイズがあるため、全体のサイズはありません。含まれるすべてのベクトルのサイズを合計する必要があります。
int size = 0;
for(int i = 0; i < v2d.size(); i++)
size += v2d[i].size();