初始化unique_ptr向量的任何方法

Any way to initialize a vector of unique_ptr?

本文关键字:任何 方法 向量 ptr unique 初始化      更新时间:2023-10-16

例如

struct A
{
    vector<unique_ptr<int>> m_vector { make_unique<int>(1), make_unique<int>(2) };
};

我试过了,但失败了。有什么方法可以初始化unique_ptr的向量吗?

不能从初始值设定项列表中移动,因为元素是const。§8.5.4[dcl.init.list]/p5:

std::initializer_list<E>类型的对象由初始化器列表,就好像实现分配了N的数组一样const E类型的元素,其中N是初始值设定项列表。该数组的每个元素都使用初始值设定项列表的相应元素,以及std::initializer_list<E>对象被构造为引用大堆

您只能复制,但不能复制unique_ptr,因为它只能移动。

在构建向量后,您必须使用push_backemplace_back等来填充向量。