2017-10-15 262 views
0

我不明白有什麼區別:差異矩陣的初始化[C++]

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

bool matrix[n][m]; 

我可以使用.size()找到行列數對他們倆的?

謝謝。

+0

*「我可以使用.size()來查找行並且爲他們兩個而上?「* - 不。至於列舉的差異,我不確定,如果它太寬泛或不。 – StoryTeller

+1

一個是容器,另一個是原始的二維數組。 – Charles

+1

它可能是一個原始的二維數組,它也可能是一個可變長度的數組,它們需要如此之多的後端怪異以至於你無法真正將它們稱爲原始數組。 – user4581301

回答

0

有一個巨大的差別:

std::vector< std::vector<bool> > matrix; - 定義std::vector類型的對象可能包含其他boolstd::vector -s。

這使用由標準庫定義的容器。它有一個龐大的API,可以使用多種方法。 matrix.size()就是其中之一。

bool matrix[n][m]; - 定義m bools的n數組的數組。

這裏,matrix不是一個對象本身,而是一個原始類型。你不能在這裏使用matrix.size(),但你可以使用sizeof(matrix)/sizeof(matrix[0][0])來獲取其中的布爾總數。

我向你推薦的,是儘可能使用標準庫容器。

由於一些正確的建議,你也可以使用std::array而不是原始陣列的意見,這是他們在做什麼這裏畢竟:)

+0

推薦點頭並指向'std :: array'的提問者。 – user4581301

+0

@ user4581301,添加了您的正確建議 –