在 C++ 中解释多维向量的语句时感到困惑

Getting Confused While Interpreting a Statement Of Multidimensional Vectors in c++

本文关键字:语句 向量 C++ 解释      更新时间:2023-10-16

我是使用C++处理 2D 向量的新手,而且经常在我 在C++中使用 2D 矢量。我正在浏览某人的代码,在解释这行代码时感到困惑:

vector<vector<int>> dp(n, vector<int>(m));

这里,m和n是网格的行数和列数。

有人可以详细解释一下,这句话是什么意思吗?

这一行:

vector<vector<int>> dp(n, vector<int>(m));

正在调用std::vector的构造函数。

对于dp,第一个参数是元素的数量,第二个参数是要多次插入的值。

内部向量没有指定参数值,这将插入默认值(在int的情况下0(。

因此,在这种情况下,您正在创建一个包含n行的向量,其中每行都有m个元素,并且每个元素都是0的。

http://www.cplusplus.com/reference/vector/vector/vector/

Vector 的一个构造函数将参数 1 作为元素的数量,将参数 2 作为这些元素的值。 在本例中,您将创建一个名为 dp...它将有 n 个元素... 并且这些元素中的每一个都将初始化为大小为 m 元素的新向量。

n 和 m 值实际上只与初始大小有关...Vector 将在添加新元素时自动调整自身大小,或者如果您预计会出现重大大小更改,则明确告诉它

如果有帮助,你可以分解它

vector<vector<int>> dp(n, vector<int>(m));

实际上与

vector<int> row(m);
vector<vector<int>> dp(n, row);

第一个版本所做的只是消除row变量。