我有一个独特指针的向量。其中,我想让其中一个指针不接管其所指向的对象。如何实现?
vector<unique_ptr<int>> v;
v.push_back(make_unique<int>(10));
unique_ptr<int> p(new int(20)); // add it to v but keep p take the ownership.
问题源于以下情况。我有一份具有树形结构的数据,由GUI树状控件表示。父节点使用
vector<unique_ptr<T>>
拥有其子元素。但是有一个例外。我有一个常见的单例数据,并且也想将其附加到树上以获得友好的用户界面。这里存在冲突,因为单例也拥有所有权。使用share_ptr可以解决问题,但会牺牲一些性能。
感谢大家的答案、评论和建议。这可能是设计上的缺陷。也许我需要一个新类来处理特殊的父节点,使用vector<unique_ptr<T>>
(用于其他)和shared_ptr
甚至是原始指针(用于单例)。
shared_ptr
和weak_ptr
呢? - Nate Chandlervector<unique_ptr>
? - John Dibling