Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ std::vector中push_back函数的奇怪语法_C++_Initialization_Stdvector_List Initialization - Fatal编程技术网

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列表到
顶点的转换