【发布时间】:2020-02-02 23:28:33
【问题描述】:
我正在做作业,我看到了这个向量声明。我试图在谷歌上找到,但仍然无法理解。这里是:
vector<vector<int>>res = vector<vector<int>>(n,vector<int>(n,0));
我知道vector<vector<int>> 表示二维向量,但我不明白= vector<vector<int>>(n,vector<int>(n,0)); 后面的部分
【问题讨论】:
-
当你写
vector<vector<int>>res = vector<vector<int>>(n,vector<int>(n,0))时,右边意味着你正在创建一个大小为n的向量,其中每个元素都是一个大小为n的向量,其中所有元素都是0。 -
=之后的第一个n声明n类型为vector<int>的向量。第二部分,即vector<int>(n, 0)声明一个大小为n的向量并用零填充所有n元素。因此,第一部分将声明n大小为n的向量,其中所有零作为元素。 -
你真的不需要这个,你可以写
vector<vector<int>> res(n,vector<int>(n,0))。 -
res是vector<vector<int>>类型的值,'=' 是赋值运算符,vector<vector<int>>(n,vector<int>(n,0))是vector<vector<int>>类初始化的对象,并调用构造函数。发生了什么:(将从右到左读取语句),创建vector<vector<int>>类型的临时变量,然后将其分配(复制)给相同类型的res变量。 -
我知道了,谢谢大家!!