簡體   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