问题描述
假设我们要将类型T的对象插入到容纳类型T的对象的容器中。在任何情况下,安置都会更好吗?例如:
class MyClass {
MyClass(int x) { ... }
}
MyClass CreateClass() {
int x = ... // do long computation to get the value of x
MyClass myClass(x);
return myClass;
}
int main() {
vector<MyClass> v;
// I Couldn't benchmark any performance differences between:
v.push_back(CreateClass());
// and
v.emplace_back(CreateClass());
}
有没有论点更喜欢 v.emplace_back(CreateClass())
而不是 v.push_back(CreateClass())
?
解决方法
假设我们要将类型T的对象插入到容纳类型T的对象的容器中。在任何情况下,安置都会更好吗?
否;在那种情况下不会有实际差异。