std::vector 中 push_back 函数的奇怪语法
Weird syntax for push_back function in std::vector
我遇到了 push_back
函数的以下语法。 Vertex
只是一个包含三个浮点数 x、y 和 z 的结构。第二行看起来就像会写它。但是第一行对我来说看起来很奇怪。在对此进行解释的视频中,据说这是通过成员初始值设定项列表完成的,但它看起来更像是隐式转换。我只是对那里的大括号感到困惑。谁能解释为什么这种语法有效?
std::vector<Vertex> vertices;
vertices.push_back({ 1, 2, 3 });
vertices.push_back(Vertex(1, 2, 3));
这不是成员初始化列表而是 copy list initialization (C++11 起)。
7) in a function call expression, with braced-init-list used as an argument and list-initialization initializes the function parameter
vertices.push_back()
期望一个 Vertex
作为参数,braced-init-list { 1, 2, 3 }
用于构造一个临时的 Vertex
稍后传递给 push_back
。正如您所说,您也可以将其视为隐式转换,即从 braced-init-list 到 Vertex
.
的转换
我遇到了 push_back
函数的以下语法。 Vertex
只是一个包含三个浮点数 x、y 和 z 的结构。第二行看起来就像会写它。但是第一行对我来说看起来很奇怪。在对此进行解释的视频中,据说这是通过成员初始值设定项列表完成的,但它看起来更像是隐式转换。我只是对那里的大括号感到困惑。谁能解释为什么这种语法有效?
std::vector<Vertex> vertices;
vertices.push_back({ 1, 2, 3 });
vertices.push_back(Vertex(1, 2, 3));
这不是成员初始化列表而是 copy list initialization (C++11 起)。
7) in a function call expression, with braced-init-list used as an argument and list-initialization initializes the function parameter
vertices.push_back()
期望一个 Vertex
作为参数,braced-init-list { 1, 2, 3 }
用于构造一个临时的 Vertex
稍后传递给 push_back
。正如您所说,您也可以将其视为隐式转换,即从 braced-init-list 到 Vertex
.