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
来防止指向的对象被修改。