如何制作多维向量?

时间:2013-09-25 02:42:57

标签: c++

好吧,这听起来像是一个愚蠢的问题,但我没有从文档中读到任何可能无法解读的内容。要不然,或者我再次忽视了一些事情。

通过多维,我的意思是数组。有点像

vector<vector<double>>

可能?有什么可能的缺点,至少与数组相比?

3 个答案:

答案 0 :(得分:2)

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

vector<vector<double> >

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

double matrix[10][10];

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

答案 1 :(得分:1)

有可能。

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

答案 2 :(得分:0)

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

vector<vector<double> >

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

cin >> x;

当然,使用矢量矢量,您可以添加和删除元素,可以是元素为向量的顶层,也可以是元素为双精度的第二层。这可能是一个祝福,一个诅咒,或两者兼而有之,取决于你想要做什么 - 请注意,如果你向其中一个二级向量添加一个双精度,那么该向量的长度与其他向量的长度不同。因为二级矢量可以有不同的长度,如果固定尺寸是您想要的,我建议不要将它们用作2D阵列的替代品。