2017-04-14 1 views
0

以下のコードでは、hatは正確にmatrix.size()matrix[0].size()の違いですか?matrix.size()とmatrix [0] .size()の違い

int matrixElementsSum(std::vector<std::vector<int>> m) { 
    int s = 0; 
    for (int j = 0; j < m[0].size(); j++) { 
     for (int i = 0; i < m.size(); i++) { 
      if (m[i][j] == 0) { 
       break; 
      } 
      s += m[i][j]; 
     } 
    } 
    return s; 
} 

答えて

2

あなたが持っていると言う:

std::vector<std::vector<int>> m(10, std::vector(20); 

m.size()は、mstd::vector<int>秒の数10になります。
m[0].size()は20、数字sはm[0]になります。

int m[10][20]; 

sizeof(m)/sizeof(m[0])は10、m内の行数になります。2次元配列に、あなたが持っている場合は、その比較


sizeof(m[0])/sizeof(m[0][0])は20、列数はm[0]になります。

0

正確な意味は次のとおりです。 C++には実際の2次元ベクトルはありませんが、std::vector<T>にはstd::vector<T>が含まれています。

ベクトルを宣言した場合、std::vector<int> vec(10)には10個の要素を含むベクトルがあります。したがってvec.size()は10です。

std::vector<std::vector<int>> vec(10, std::vector<int>(10))を宣言する場合、10要素のベクトルがあり、各要素には10要素のベクトルが含まれます。したがって、vec[0]は、タイプstd::vector<int>です。

このベクター(つまりvec[0])に含まれる要素の量を知りたい場合は、簡単にvec[0].size()を実行できます。

合計の要素数が必要な場合は、どのベクトルが含まれているかをカウントする必要がある場合は、vecに、これらのベクトルのそれぞれに含まれる要素の数を掛けます。従ってvec.size()*vec[0].size()

は結論でき:

我々はstd::vector<std::vector<int>> vec(10,std::vector<int>(10))有する:行

  • 番号(vecに含まstd::vector<int>数):列のvec.size()
  • 番号(それぞれに含まれる要素の数をstd::vector<int>):vec[0].size()
  • エレメントの総数:vec.size()*vec[0].size()
関連する問題