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

Nat*_*mal 4 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? 
Run Code Online (Sandbox Code Playgroud)

mfo*_*ini 8

在使用时std::vector::emplace_back,您实际上不需要创建临时文件,这正是emplace_back用于:

records.emplace_back(1000);
Run Code Online (Sandbox Code Playgroud)

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