C++ 将唯一的向量传递给函数const reference

C++ 将唯一的向量传递给函数const reference,c++,c++11,smart-pointers,stdvector,C++,C++11,Smart Pointers,Stdvector,我通常传递一个包含原始指针的向量,如下所示: someFunc(const std::vector<MyClass*>& classList){..} someFunc(const std::vector<std::unique_ptr<MyClass>>& classList){..} someFunc(const std::vector&classList){..} 我想知道您是否可以像这样使用unique_ptr: someFun

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

someFunc(const std::vector<MyClass*>& classList){..}
 someFunc(const std::vector<std::unique_ptr<MyClass>>& classList){..}
someFunc(const std::vector&classList){..}
我想知道您是否可以像这样使用unique_ptr:

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

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

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


关于常量正确性,使用迭代器或
运算符[]
访问向量元素将产生对
std::unique_ptr
s的常量引用。使用
const std::unique\u ptr
时,当指向的
T
对象可以修改时,无法重新分配指针。

“当指向的T对象可以修改时,无法重新分配指针。”。所以,它应该是这样的:someFunc(const std::vector&classList){..}@karl88:这就像
std::vector
,这也不是问题所要做的。@karl88是的,您需要
std::unique\u ptr
来防止指向的对象被修改。