C++ std::vector中push_back函数的奇怪语法
我遇到了C++ std::vector中push_back函数的奇怪语法,c++,initialization,stdvector,list-initialization,C++,Initialization,Stdvector,List Initialization,我遇到了push_-back函数的以下语法Vertex只是一个包含三个浮动x、y和z的结构。第二行看起来就像我写的一样。但我觉得第一行很奇怪。在解释这一点的视频中,有人说这是通过成员初始值设定项列表完成的,但它看起来更像是隐式转换。我只是被那些花括号弄糊涂了。有人能解释一下这种语法为什么有效吗 std::vector<Vertex> vertices; vertices.push_back({ 1, 2, 3 }); vertices.push_back(Vertex(1, 2,
push_-back
函数的以下语法Vertex
只是一个包含三个浮动x、y和z的结构。第二行看起来就像我写的一样。但我觉得第一行很奇怪。在解释这一点的视频中,有人说这是通过成员初始值设定项列表完成的,但它看起来更像是隐式转换。我只是被那些花括号弄糊涂了。有人能解释一下这种语法为什么有效吗
std::vector<Vertex> vertices;
vertices.push_back({ 1, 2, 3 });
vertices.push_back(Vertex(1, 2, 3));
std::向量顶点;
顶点。向后推_({1,2,3});
顶点。向后推(顶点(1,2,3));
这不是成员初始值设定项列表,而是(从C++11开始)
7) 在函数调用表达式中,使用大括号的init list作为参数,list初始化初始化函数参数
vertexs.push_back()
需要一个顶点
作为参数,带括号的init list{1,2,3}
用于构造一个临时的顶点
,稍后传递给push_
。正如您所说,您也可以将其视为隐式转换,即从带括号的init列表到顶点的转换