将 unique_ptr 的向量传递给函数,常量引用

Pass a vector of unique_ptr to function, const reference

我通常会像这样传递一个包含原始指针的向量:

someFunc(const std::vector<MyClass*>& classList){..}

我想知道你是否可以像这样对 unique_ptr 做同样的事情:

 someFunc(const std::vector<std::unique_ptr<MyClass>>& classList){..}

?是同一个意思吗,即只读。

是的,你可以。不,这并不意味着同一件事:std::unique_ptr 表示指针拥有的资源。通用原始指针可以有许多其他语义。

关于 const 正确性,使用迭代器或 operator[] 访问向量的元素将产生对 std::unique_ptr 的常量引用。使用 const std::unique_ptr<T> 不能重新分配指针,而可以修改指向的 T 对象。