将 unique_ptr 的向量传递给函数,常量引用
Pass a vector of unique_ptr to function, const reference
我通常会像这样传递一个包含原始指针的向量:
someFunc(const std::vector<MyClass*>& classList){..}
我想知道你是否可以像这样对 unique_ptr 做同样的事情:
someFunc(const std::vector<std::unique_ptr<MyClass>>& classList){..}
?是同一个意思吗,即只读。
是的,你可以。不,这并不意味着同一件事:std::unique_ptr
表示指针拥有的资源。通用原始指针可以有许多其他语义。
关于 const 正确性,使用迭代器或 operator[]
访问向量的元素将产生对 std::unique_ptr
的常量引用。使用 const std::unique_ptr<T>
不能重新分配指针,而可以修改指向的 T
对象。
我通常会像这样传递一个包含原始指针的向量:
someFunc(const std::vector<MyClass*>& classList){..}
我想知道你是否可以像这样对 unique_ptr 做同样的事情:
someFunc(const std::vector<std::unique_ptr<MyClass>>& classList){..}
?是同一个意思吗,即只读。
是的,你可以。不,这并不意味着同一件事:std::unique_ptr
表示指针拥有的资源。通用原始指针可以有许多其他语义。
关于 const 正确性,使用迭代器或 operator[]
访问向量的元素将产生对 std::unique_ptr
的常量引用。使用 const std::unique_ptr<T>
不能重新分配指针,而可以修改指向的 T
对象。