如何解释多维矢量?

时间:2018-08-23 23:24:58

标签: c++ arrays multidimensional-array vector

我不了解多维向量的语法。

多维数组非常简单。

foo[3][5];

这是5个元素,每个元素3个元素。

向量不是那么直接。

vector<vector<int>> foo(n);

我读这篇文章,因为对于每个foo,“类型”都是向量。将向量用于其他向量的类型如何使其具有二维性?而且,vector<int>还是和带有标识符的矢量,带有空整数的矢量一样吗?

2 个答案:

答案 0 :(得分:2)

您对int foo[3][5];的理解是正确的:它是一个由三个内部数组组成的外部数组,每个内部数组包含5个整数。

为便于讨论,有些过分夸大了,但是如果您将数组和向量视为可互换的vector<vector<int>> foo;并没有什么不同。

它是一个外部向量,每个成员都是一个包含整数的内部向量。

因此,就矩阵而言,外部数组/向量是列,内部数组/向量是行。真的没什么不同。而行/列的本质就是使其成为二维的。

没有任何参数可以实现的内幕非常不同,但是当您使用它们时,它们的行为将非常相似。

答案 1 :(得分:0)

foo并不是真正的“多维”数组,它是一个其元素也是数组的数组。

使用

int foo[3][5];

foo是一个包含三个元素的数组,每个元素都是一个包含五个元素的数组。
也就是说,foo[1]是五个ints(其类型为int[5])的数组。

向量的向量的工作方式类似于数组的数组,只是它们的大小不固定。

vector<vector<int>> foo(n);

创建一个包含n个元素的向量,每个元素都是一个空向量(因为向量默认情况下为空)。

vector<vector<int>> bar(3, vector<int>(5));

将创建具有三个vector<int>元素的向量,而bar[1]将是具有五个int元素的向量。