我希望从一个C ++ std::map
中引用一个对象并将其放在另一个C ++中 - 例如将对象从低优先级树移动到高优先级树。
如果我erase
来自一棵树的对象,我是否会完全失效?如果我同时在两个树中都有它然后erase
(即对象被引用两次)该怎么办。
文档暗示在任何一种情况下该对象都将失效,但它不是100%明确恕我直言。
更新这是一个例子 - 但是我认为这不会起作用 - 至少使用引用 - 我将不得不使用某种形式的指针......
PartialPage oldPage = hTree->oldestPage();
lTree->insertOldPage(oldPage);
hTree->erase(oldPage);
NB oldestPage()
会返回对PartialPage
答案 0 :(得分:1)
容器通过存储自己的副本来拥有其中的元素。您的对象在任何时候都在<两个容器中而不是。
如果您希望引入共享资源语义,则必须在地图中存储std::shared_ptr<PartialPage>
。