我不太确定我是否可以随时用emplace_back
替换push_back
。Emplace_back而不是push_back对stl容器?
我知道emplace_back
可以转发参数直接构造对象的载体而不复制两次(完美转发等)
如果我去做soemthing这样的:
vector<A> o;
o.emplace_back(A{});
然后它应该调用A.正确的复制构造函数? 所以它和push_back
完全一样。不是吗?
是否有一些例外? 有没有很好的理由使用push_back?因为那样只是总是使用emplace_back而不考虑它。
什么是你的问题?如果你想利用放置,你会写'o.emplace_back();'。 –
可能重复的[我应该更换所有调用推/ \ back与emplace \ _back?](http://stackoverflow.com/questions/22468837/should-i-replace-all-calls-to-push-back-with -emplace-back) – NathanOliver
在C++ 11之后有'push_back(value_type && val)',所以不需要'emplace_back'临时'A {}'。 – 101010