将unique_ptr的向量传递给函数,const-reference

Pass a vector of unique_ptr to function, const reference

本文关键字:函数 const-reference 向量 unique ptr      更新时间:2023-10-16

我通常传递一个包含原始指针的向量,如下所示:

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

我想知道你是否可以对unique_ptr这样做:

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

意思是一样的吗?,即只读。

可以。不,意思不一样:std::unique_ptr表示指针所拥有的资源。一个通用的原始指针可以有许多其他的语义。

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