如何在不释放元素的情况下从 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
在这种情况下,考虑在从集合中删除指针之前复制指针怎么样?
正如标题所说,我想从 unordered_set
中删除元素而不调用它的析构函数。在我的例子中,我将 collection 个 MyObject
指针存储在一个无序集中,但是我也想将它们从无序集中删除,而不是 freed/cleaned 起来。但是,当调用 erase
时,元素会自动释放。有没有什么方法可以在不求助于 shared/smart 指针的情况下实现这一目标?
编辑:原来 memcheck 工具没有正确检测内存 freeing/usage 导致错误的结论和这个问题。 在 unordered_set!
上调用 erase 时指针不会被释放您可以extract
包含元素的节点而不破坏集合的元素。
I'm storing a collection of MyObject pointers
在这种情况下,考虑在从集合中删除指针之前复制指针怎么样?