繁体   English   中英

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

[英]C++ iterator with weak pointers to container elements

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

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

关键是:如果在使用迭代器时从树中删除节点,则仅当销毁迭代器时(如果我使用共享指针),才会释放节点资源。 使用弱指针,我认为资源会立即被释放(可能使迭代器不一致,但这并不重要)。

您能想到其他解决方案吗?

首先,迭代器仅包含指向容器元素的指针,而不包含元素本身。 因此,无论是否为weak_ptr

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM