gpt4 book ai didi

c++ - std::vector 中 push_back 函数的奇怪语法

转载 作者:行者123 更新时间:2023-12-01 14:04:38 30 4
gpt4 key购买 nike

我遇到了 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作为参数,花括号初始化列表 { 1, 2, 3 }用于构造临时 Vertex传递给 push_back之后。正如您所说,您也可以将其视为隐式转换,即从支撑初始化列表到 Vertex 的转换。 .

关于c++ - std::vector 中 push_back 函数的奇怪语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60847285/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com