如何将参数完美地转发给STL集合?

时间:2013-10-23 16:05:35

标签: c++ performance stl

如何将对象创建的参数完美地转发给STL集合?

我想避免不必要的副本。虽然我可以通过存储指针来避免这种情况,但我不想使用动态内存。

struct MyFatClass
{
    explicit MyFatClass(int a) {...}
    ...
}; 

std::vector<MyFatClass> records;
records.emplace_back(MyFatClass(1000)); // How can I avoid this temporary object? 

1 个答案:

答案 0 :(得分:8)

使用std::vector::emplace_back时,您实际上不需要创建临时文件,这正是emplace_back所用的内容:

records.emplace_back(1000);

这将构建一个MyFatClass对象,避免临时和额外的副本。