c++ std::list::push_back 不复制现有实例

标签 c++

我想将一个元素附加到列表中而不复制任何已经存在的变量。

int some_big_int = 123456789;
struct heavy_struct {
  std::vector<double> vec(some_big_number, 0);
};

std::list<heavy_struct> my_list;
heavy_struc new_item;
my_list.push_back(new_item);

如果我理解正确的话,会发生这样的事情:

  • heavy_struct 实例被创建为 new_item
  • my_list 创建一个新的 heavy_struct 实例,其中复制了 new_item

是否可以只附加一个新的 heavy_struct,而不复制现有的结构? 在这种情况下,此复制过程很繁重且无用。

最佳答案

是的:

my_list.emplace_back();

将其参数(在本例中为无)传递给在列表中就地构造的 heavy_struct 对象。

关于c++ std::list::push_back 不复制现有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28220018/

相关文章:

c++ - 在类 C++ 中更改整数

c++ - 如何从构造函数中确定类的内存分配地址?

c++ - 检查子类的构造函数是否在 C++ 中是公共(public)的

c++ - 在 C++ 中从 X 毫秒前获取时间戳

c++ - vector::insert 是否只允许保留一次并避免进一步的容量检查?

c++ - 我可以使用成员变量实例化成员类模板吗?

c++ - Getline 获取 vector 字符串

c++ - 将输入流中固定数量的元素复制到 vector 中

c# - 如何使用特定指南在 C# 中启动可执行文件

c++ - 如何计算构造函数?