【发布时间】:2015-09-27 08:51:59
【问题描述】:
我有一个类成员变量
vector<std::unique_ptr<T> > v;
和一个成员函数,我想在其中使用v 的unique_ptr 元素,通过iterator 参数“寻址”。哪一个更好?
void mem_fun(vector<std::unique_ptr<T> >::iterator it) {
std::unique_ptr<T> p;
p = std::move(*it);
...
}
或者
void mem_fun(vector<std::unique_ptr<T> >::iterator it) {
std::unique_ptr<T>& p = *it;
...
}
据我所知,第二种方式似乎违反了unique_ptr 的“独特性”。但是std::move() 可以移动*it(参考)吗?顺便说一句,谁真正拥有 unique_ptr 指针、类、成员向量、任何成员函数或其他什么?
【问题讨论】:
-
您的函数是否只访问
T对象?或者它真的需要迭代器,即必须访问多个Ts 吗? -
它确实需要一个迭代器。
标签: c++ vector move unique-ptr