C++ C++;具有指向容器元素的弱指针的迭代器

C++ C++;具有指向容器元素的弱指针的迭代器,c++,stl,iterator,shared-ptr,smart-pointers,C++,Stl,Iterator,Shared Ptr,Smart Pointers,我有一个通用的树容器,我想实现一个迭代器来遍历他的元素。在主容器中,我使用共享指针连接树的各个节点 使用弱指针实现迭代器有意义吗 要点是:如果我在使用迭代器时从树中删除一个节点,那么只有在迭代器被破坏时(如果我使用共享指针),节点资源才会被释放。 对于弱指针,我假设资源会立即释放(可能会使迭代器不一致,但这并不重要) 您能想出解决这个问题的其他方法吗?首先,迭代器只包含指向容器元素的指针,而不包含元素本身。所以不管它是不是很弱 所以,如果从容器中删除元素,迭代器可能会变得无效。这意味着它可以指向

我有一个通用的树容器,我想实现一个迭代器来遍历他的元素。在主容器中,我使用共享指针连接树的各个节点

使用弱指针实现迭代器有意义吗

要点是:如果我在使用迭代器时从树中删除一个节点,那么只有在迭代器被破坏时(如果我使用共享指针),节点资源才会被释放。 对于弱指针,我假设资源会立即释放(可能会使迭代器不一致,但这并不重要)


您能想出解决这个问题的其他方法吗?

首先,迭代器只包含指向容器元素的指针,而不包含元素本身。所以不管它是不是很弱

所以,如果从容器中删除元素,迭代器可能会变得无效。这意味着它可以指向垃圾内存、释放的内存、而不是您的内存、另一个元素(不是您认为的)等等


这是一种容易出错的方法,并且会导致问题。

如果不使用线程,这无关紧要吗?如果我理解你说的话,问题是,如果我在树上迭代时删除一个节点,我可能会遇到一个删除的节点(因为它仍然在内存中)。从树中删除节点时,迭代器必须无效。