我通常传递包含这样的原始指针的向量:
someFunc(const std::vector<MyClass*>& classList){..}
我想知道你是否可以像这样对unique_ptr做同样的事情:
someFunc(const std::vector<std::unique_ptr<MyClass>>& classList){..}
?这是否意味着同样的事情?,即只读。
答案 0 :(得分:6)
是的,你可以。不,它并不意味着相同的事情:std::unique_ptr
表示由指针拥有的资源。通用原始指针可以有许多其他语义。
关于const正确性,使用迭代器或operator[]
访问向量的元素将产生对std::unique_ptr
的常量引用。使用const std::unique_ptr<T>
时,无法重新分配指针,同时可以修改指向的T
对象。