【发布时间】:2013-07-27 09:51:48
【问题描述】:
我知道容器上的 emplace 函数的一般概念(“就地构造新元素”)。
我的问题不是它的作用,
但更像是 Effective C++11 之一。
什么是决定何时使用的好规则(例如,当涉及到std::vector)
emplace_back() 以及何时使用 push_back() 以及一般 emplace* 与“旧”插入函数?
【问题讨论】:
-
在不可复制的类型上使用
emplace。 -
@Rapptz 如果它是不可复制但可移动的,又名 unique_ptr 怎么办?
-
我的第一个想法是总是使用
emplace。我无法立即想到使用push_back的理由。我一定是忘记了什么 -
@MooingDuck ofc 这是一个合法的可能性......但我宁愿让它在 SO 上得到很好的 A 的祝福,而不是把它从我的愚蠢分析中拉出来
-
@MooingDuck 这个问题明确指出 OP 知道
emplace_back做了什么。您链接的问题是emplace_back 是做什么的。