【问题标题】:data that push back to 2D vector推回二维向量的数据
【发布时间】:2021-08-16 07:20:03
【问题描述】:

vector<vector<int>> output; // 2D int vector


//normally, we can do
vector<int> v = { 44, 55 };
output.push_back(v);

//I found some example that we can do
output.push_back({ 22, 33 });

我知道 {} 可用于初始化数组或向量。 如果我想跳过像 vector&lt;int&gt; v = { 44, 55 }; 这样的行,编译器如何知道 { 22, 33 } 是 vector&lt;int&gt; 而不是 int 数组?

和 {22,33} 它是一个临时对象吗? (我知道按值返回函数总是会产生临时对象。)

【问题讨论】:

    标签: c++ stl stdvector list-initialization braced-init-list


    【解决方案1】:

    { 22, 33 } 是一个花括号初始化列表,它的使用方式取决于上下文。

    output.push_back({ 22, 33 }); 中,push_back 期望 vector&lt;int&gt;,可以从花括号初始化列表 { 22, 33 } 构造(list-initialization 自 C++11)(通过 vector 的构造函数采用 @987654328 @),然后构造一个临时的vector&lt;int&gt; 并传递给push_back

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 2017-05-05
      相关资源
      最近更新 更多