【问题标题】:How can I perfectly forward arguments to a STL collection?如何将参数完美地转发到 STL 集合?
【发布时间】:2013-10-23 16:05:34
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c++ performance stl


    【解决方案1】:

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

    records.emplace_back(1000);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-16
      • 2012-12-20
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多