【问题标题】:C++ 2D Vector Declaration [duplicate]C ++ 2D向量声明[重复]
【发布时间】:2020-02-02 23:28:33
【问题描述】:

我正在做作业,我看到了这个向量声明。我试图在谷歌上找到,但仍然无法理解。这里是:

     vector<vector<int>>res = vector<vector<int>>(n,vector<int>(n,0));

我知道vector&lt;vector&lt;int&gt;&gt; 表示二维向量,但我不明白= vector&lt;vector&lt;int&gt;&gt;(n,vector&lt;int&gt;(n,0)); 后面的部分

【问题讨论】:

  • 当你写vector&lt;vector&lt;int&gt;&gt;res = vector&lt;vector&lt;int&gt;&gt;(n,vector&lt;int&gt;(n,0))时,右边意味着你正在创建一个大小为n的向量,其中每个元素都是一个大小为n的向量,其中所有元素都是0。
  • = 之后的第一个 n 声明 n 类型为 vector&lt;int&gt; 的向量。第二部分,即vector&lt;int&gt;(n, 0) 声明一个大小为n 的向量并用零​​填充所有n 元素。因此,第一部分将声明 n 大小为 n 的向量,其中所有零作为元素。
  • 你真的不需要这个,你可以写vector&lt;vector&lt;int&gt;&gt; res(n,vector&lt;int&gt;(n,0))
  • resvector&lt;vector&lt;int&gt;&gt; 类型的值,'=' 是赋值运算符,vector&lt;vector&lt;int&gt;&gt;(n,vector&lt;int&gt;(n,0))vector&lt;vector&lt;int&gt;&gt; 类初始化的对象,并调用构造函数。发生了什么:(将从右到左读取语句),创建vector&lt;vector&lt;int&gt;&gt; 类型的临时变量,然后将其分配(复制)给相同类型的res 变量。
  • 我知道了,谢谢大家!!

标签: c++ vector 2d-vector


【解决方案1】:

你也可以这样写:

vector<vector<int>>res(n,vector<int>(n,0));

这意味着你有 n 个vector&lt;int&gt;,其中每个都有n 元素初始化为0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多