Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何生成多维向量?_C++ - Fatal编程技术网

C++ 如何生成多维向量?

C++ 如何生成多维向量?,c++,C++,好吧,这听起来可能是个愚蠢的问题,但我没有从文档中读到任何说这是不可能的东西。不是这样,就是我又忽略了什么 所谓多维,我指的是像数组。有点像 vector<vector<double>> 向量 可能吗?至少与数组相比,可能存在哪些缺点?这是可能的,但请注意,两个之间需要一个空格,以消除右移运算符之间的歧义,即 vector<vector<double> > 编辑:正如人们指出的,使用C++11时不需要空格。这是可能的 其中一个可能的缺点可能是

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

所谓多维,我指的是像数组。有点像

vector<vector<double>>
向量

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

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

vector<vector<double> >
编辑:正如人们指出的,使用C++11时不需要空格。

这是可能的


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

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

vector<vector<double> >

当然,对于向量向量,可以在元素为向量的顶层添加和删除元素,也可以在元素为双元素的第二层添加和删除元素。这可能是祝福,也可能是诅咒,或者两者兼而有之,这取决于你正在尝试做什么——请注意,如果你向其中一个二级向量添加一个双精度,那么该向量的长度与其他所有向量的长度都不同。因为第二级向量可以有不同的长度,如果需要固定尺寸,我建议不要使用它们来替代二维数组

是的,很有可能。在尝试了这个之后,你有没有遇到什么特别的麻烦?我有,但是当yan回答关于尖括号之间的空间时,问题被澄清了。只是一个后续问题。默认情况下,g++将使用C++11定义(?)编译代码,对吗?不,您需要
std=C++11
。您只需要C++11之前版本中的空格。C++11允许在声明模板时附加两个
。C++11还有一个与
向量不同的
数组。它就像一个具有固定编译时定义长度的
向量。
vector<vector<double> >
cin >> x;