如何在不释放元素的情况下从 unordered_set 中删除元素

How to remove element from unordered_set without elements being freed

正如标题所说,我想从 unordered_set 中删除元素而不调用它的析构函数。在我的例子中,我将 collection 个 MyObject 指针存储在一个无序集中,但是我也想将它们从无序集中删除,而不是 freed/cleaned 起来。但是,当调用 erase 时,元素会自动释放。有没有什么方法可以在不求助于 shared/smart 指针的情况下实现这一目标?

编辑:原来 memcheck 工具没有正确检测内存 freeing/usage 导致错误的结论和这个问题。 在 unordered_set!

上调用 erase 时指针不会被释放

您可以extract包含元素的节点而不破坏集合的元素。

I'm storing a collection of MyObject pointers

在这种情况下,考虑在从集合中删除指针之前复制指针怎么样?