如何解释多维向量?



我不明白多维向量的语法。

多维数组非常简单。

foo[3][5];

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

向量不是那么简单。

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

我读到这个,因为对于每个foo,"类型"是向量。如何将一个向量用于另一个向量的类型使其成为二维的?而且,vector<int>仍然与带有标识符的向量,带有空整数的向量相同吗?

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

为了这个讨论,稍微简单化了一点,但如果你认为数组和向量是可互换的vector<vector<int>> foo;实际上并没有什么不同。

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

所以从矩阵的角度考虑,外部数组/向量是列,内部数组/向量是行。 真的没什么不同。 而行/列的性质使它成为二维的。

没有论证说在引擎盖下实现是极其不同的,但是当你使用它们时,它们的行为会非常相似。

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元素的向量。

最新更新