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

时间:2015-12-12 03:49:07

标签: c++ c++11 smart-pointers stdvector

我通常传递包含这样的原始指针的向量:

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

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

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

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

1 个答案:

答案 0 :(得分:6)

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

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