std::vector<Foo> v;
v.push_back(Foo());
这会为Foo创建一个临时变量,还是像emplace_back()一样工作?
答案 0 :(得分:2)
Foo()
会创建一个临时的,但理论上编译器可以根据as-if rule对其进行优化。
您可以使用vector::emplace_back
将新元素追加到容器的末尾。该元素是通过
std::allocator_traits::construct
构造的,{{1}}通常使用placement-new在容器提供的位置构建元素。