我不了解多维向量的语法。
多维数组非常简单。
foo[3][5];
这是5个元素,每个元素3个元素。
向量不是那么直接。
vector<vector<int>> foo(n);
我读这篇文章,因为对于每个foo,“类型”都是向量。将向量用于其他向量的类型如何使其具有二维性?而且,vector<int>
还是和带有标识符的矢量,带有空整数的矢量一样吗?
答案 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
元素的向量。