2

好的,这听起来像是一个愚蠢的问题,但我没有从文档中读到任何说这是不可能的。要么,要么我又忽略了一些东西。

多维,我的意思是像数组。是这样的

vector<vector<double>>

可能的?至少与数组相比,可能存在哪些缺点?

4

3 回答 3

2

这是可能的,但请注意,您需要在两个>s 之间留一个空格来消除右移运算符之间的歧义,即

vector<vector<double> >

另外,我不会将这些向量称为数组,因为数组在 C++ 中具有非常明确的含义:

double matrix[10][10];

编辑:正如人们指出的那样,使用 C++11 时不需要空格。

于 2013-09-25T02:45:30.903 回答
1

有可能的。

可能的缺点之一可能是它可能导致从免费存储中进行多个单独的分配,因为每个向量都有自己的分配。相反,动态数组分配只从连续内存中进行一次,这对缓存更友好。

于 2013-09-25T02:49:47.010 回答
0

您所描述的内容绝对有可能,但如果您不使用 C++11 编译器,则需要将其键入为:

vector<vector<double> >

两个字符之间的空格>是必要的,这样编译器就不会认为您正在使用>>运算符,如下所示:

cin >> x;

当然,使用向量的向量,您可以添加和删除元素,无论是在元素是向量的顶层,还是在元素是双精度值的第二层。这可能是一个祝福,一个诅咒,或两者兼而有之,具体取决于您要执行的操作 - 请注意,如果您向其中一个二级向量添加双精度,则该向量的长度与所有其他向量的长度不同。因为二级向量可以有不同的长度,所以如果你想要固定维度,我建议不要将它们用作二维数组的替代品。

于 2013-09-25T02:54:20.280 回答