我不明白多维向量的语法。
多维数组非常简单。
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
元素的向量。