如何将对象创建的参数完美地转发给STL集合?
我想避免不必要的副本。虽然我可以通过存储指针来避免这种情况,但我不想使用动态内存。
struct MyFatClass
{
explicit MyFatClass(int a) {...}
...
};
std::vector<MyFatClass> records;
records.emplace_back(MyFatClass(1000)); // How can I avoid this temporary object?
答案 0 :(得分:8)
使用std::vector::emplace_back
时,您实际上不需要创建临时文件,这正是emplace_back
所用的内容:
records.emplace_back(1000);
这将构建一个MyFatClass
对象,避免临时和额外的副本。