我怎样才能完美地将参数转发到 STL 集合

How can I perfectly forward arguments to a STL collection?

本文关键字:转发 参数 STL 集合 完美      更新时间:2023-10-16

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

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

struct MyFatClass
{
    explicit MyFatClass(int a) {...}
    ...
}; 
std::vector<MyFatClass> records;
records.emplace_back(MyFatClass(1000)); // How can I avoid this temporary object? 

使用std::vector::emplace_back时实际上不需要创建临时的,这正是emplace_back的用途:

records.emplace_back(1000);

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