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

时间:2016-04-11 23:21:36

标签: c++ stl

std::vector<Foo> v;
v.push_back(Foo());

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

1 个答案:

答案 0 :(得分:2)

Foo()会创建一个临时的,但理论上编译器可以根据as-if rule对其进行优化。

您可以使用vector::emplace_back

  

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