4

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

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

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

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

1 回答 1

8

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

records.emplace_back(1000);

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

于 2013-10-23T16:06:09.857 回答