2017-10-15 13 views
0

私は違い何得ることはありません:違い[C++]

std::vector< std::vector<bool> > matrix; 

bool matrix[n][m]; 

私はそれらの両方のためにrowsとcolsを見つけるために.size()を使用することはできますか?

ありがとうございます。

+0

のためにここにいるものですそれらの両方のためのcols? " - - いいえ。相違を列挙するために、それが広すぎるかどうかわからない。 – StoryTeller

+1

1つはコンテナであり、もう1つはプリミティブな2D配列です。 – Charles

+1

これは基本的な2D配列である可能性があります。これは可変長配列でもかまいませんし、これらのバグはあまりにも多くのバックエンドの奇妙さを必要とします。 – user4581301

答えて

0

大きな違いがあります:

std::vector< std::vector<bool> > matrix; - 他std::vectorboolの-sが含まれていてもよいタイプstd::vectorのオブジェクトを定義します。

標準ライブラリで定義されたコンテナを使用します。それはあなたが使うことができる複数のメソッドを備えた巨大なAPIを持っています。 matrix.size()がその1つです。

bool matrix[n][m]; - nの配列を定義します。m boolsの配列です。

ここで、matrixは、オブジェクト単位ではなく、むしろプリミティブ型です。ここではmatrix.size()を使用することはできませんが、sizeof(matrix)/sizeof(matrix[0][0])を使用すると、その中のboolの総数を取得できます。

可能な限り標準ライブラリのコンテナを使用することをお勧めします。コメントの一部が正常に示唆したように

、行を見つけるために)「私は(.sizeを使用することができます*あなたはまた、代わりにプリミティブ配列のstd::arrayを使用することができ、これは、彼らが結局:)

+0

'std :: array'にnodを指し示し、アスカーを指すことを推奨します。 – user4581301

+0

@ user4581301、あなたの正しい推薦を加えました –