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

kar*_*l88 4 c++ smart-pointers stdvector c++11

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

someFunc(const std::vector<MyClass*>& classList){..}
Run Code Online (Sandbox Code Playgroud)

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

 someFunc(const std::vector<std::unique_ptr<MyClass>>& classList){..}
Run Code Online (Sandbox Code Playgroud)

?这是否意味着同样的事情?,即只读.

Sho*_*hoe 6

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

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

  • @ karl88:那就像`std :: vector <const MyClass*>`,这不是问题所在. (2认同)