我正在使用map
来快速访问程序中的某些元素。我想从我的map
中删除其中的一些元素(我在别处引用了它们)。有没有办法删除这些项目,而没有map
的{{1}}或clear()
函数调用它们的析构函数?
答案 0 :(得分:2)
如果要将指针映射到对象,则不会销毁对象本身。如果对象本身在地图中,它们将被销毁。
答案 1 :(得分:2)
使用shared_ptr,这就是它的用途。如果项目“明确地”存储在其他地方,请考虑在地图中使用weak_ptr,并使用shared_ptr作为最终商店位置。
可能还有其他方法可以 工作,但是让自己头疼并使用正确的工具来完成工作。
答案 2 :(得分:1)
没有
如果元素按值存储,则无法执行此操作。如果你需要这种能力,可以考虑将它们放入智能指针(如unique_ptr
,允许你.release()
保持指针。
答案 3 :(得分:0)
没有;使用splice()
方法的唯一标准容器是std::list
。这意味着您可以将列表节点从一个列表移动到另一个列表,但不能映射或设置节点。