【发布时间】:2015-05-19 07:11:06
【问题描述】:
根据thesequestionshere中的答案,我知道使用c++14的std::make_unique肯定比直接使用emplace_back(new X)更可取。
也就是说,是不是更喜欢打电话
my_vector.push_back(std::make_unique<Foo>("constructor", "args"));
或
my_vector.emplace_back(std::make_unique<Foo>("constructor", "args"));
也就是说,当添加由std::make_unique 构造的std::unique_ptr 时,我应该使用push_back 还是emplace_back?
==== 编辑 ====
为什么? c:
【问题讨论】:
-
使用向量的项目类型的实际参数,
push_back和emplace_back必须做同样的事情。 -
@Praetorian 非常感谢。
-
如果您的
unique_ptr上有自定义删除器,那么事情可能会发生变化。
标签: c++ c++11 stdvector c++14 unique-ptr