1

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<int>如果我想跳过这一行,编译器如何知道 { 22, 33 } 是一个而不是 int 数组vector<int> v = { 44, 55 };

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

4

1 回答 1

2

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

output.push_back({ 22, 33 });,push_backvector<int>,可以从花括号初始化列表(通过的构造函数)构造(从 C++11 开始的列表初始化),然后构造一个临时对象并将其传递给.{ 22, 33 }vectorstd::initializer_listvector<int>push_back

于 2021-05-28T02:38:58.907 回答