![](/img/trans.png)
[英]How to reimplement iterator of a class that contains STL container of pointers in C++
[英]C++ iterator with weak pointers to container elements
我有一个通用的树容器,我想实现一个迭代器来遍历他的元素。 在主容器中,我使用了共享指针来连接树的各个节点。
使用弱指针实现迭代器有意义吗?
关键是:如果在使用迭代器时从树中删除节点,则仅当销毁迭代器时(如果我使用共享指针),才会释放节点资源。 使用弱指针,我认为资源会立即被释放(可能使迭代器不一致,但这并不重要)。
您能想到其他解决方案吗?
首先,迭代器仅包含指向容器元素的指针,而不包含元素本身。 因此,无论是否为weak_ptr
。
因此,如果您从容器中删除元素,则迭代器可能变得无效 。 这意味着它可以指向垃圾内存,已释放的内存,非您的内存,另一个元素(您认为不是)等等。
这是容易出错的方式,并且会导致问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.