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)
?这是否意味着同样的事情?,即只读.
是的你可以.不,它并不意味着相同的事情:std::unique_ptr代表指针所拥有的资源.通用原始指针可以具有许多其他语义.
关于const正确性,使用迭代器访问向量的元素或operator[]将产生对std::unique_ptrs的常量引用.当const std::unique_ptr<T>指向的T对象可以被修改时,指针不能被重新赋值.
| 归档时间: |
|
| 查看次数: |
1061 次 |
| 最近记录: |