我想将一个元素附加到列表中而不复制任何已经存在的变量。
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_itemmy_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/