有没有办法不为 push_back() 创建临时变量

Is there any way of not creating temp variable for push_back()?

本文关键字:创建 变量 back push 有没有      更新时间:2023-10-16
std::vector<Foo> v;
v.push_back(Foo());

这是为 Foo 创建一个临时变量,还是像 emplace_back(( 一样工作?

Foo()创建一个临时的,尽管理论上编译器由于as-if规则而被允许对其进行优化。

您可以使用vector::emplace_back

将新元素追加到容器的末尾。该元素是通过 std::allocator_traits::construct 构造的, 通常使用 placement-new 在容器提供的位置就地构造元素。