差异矩阵的初始化[C++]

问题描述:

我不明白有什么区别:差异矩阵的初始化[C++]

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

bool matrix[n][m]; 

我可以使用.size()找到行列数对他们俩的?

谢谢。

+0

*“我可以使用.size()来查找行并且为他们两个而上?“* - 不。至于列举的差异,我不确定,如果它太宽泛或不。 – StoryTeller

+1

一个是容器,另一个是原始的二维数组。 – Charles

+1

它可能是一个原始的二维数组,它也可能是一个可变长度的数组,它们需要如此之多的后端怪异以至于你无法真正将它们称为原始数组。 – user4581301

有一个巨大的差别:

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,添加了您的正确建议 –