2012-02-29 158 views
1

如何檢查迭代器(STL或Java樣式)是否仍然對QMapQList有效?檢查迭代器是否對QT容器有效

預先感謝您。

+1

否............. – 2012-02-29 19:27:49

+0

......發生了什麼? – 2012-02-29 19:39:05

+0

通過另一個線程更改容器後。我知道我可以爲此製作外部標誌,但我猜測我們是否可以使用封裝功能。 – 2012-02-29 19:47:16

回答

2

不可以。迭代器的全部要點是它們是任何容器的獨立獨立。如果沒有其他人仍然有任何迭代器或對容器元素的引用(取決於容器的迭代器/引用失效規範),則由您決定是否只變更容器。

+0

我的問題的重點在於迭代器的狀態隱含地依賴於它們的容器。 QT庫通過在迭代器存活時複製容器(克隆)來部分解決此問題。但它並不是無處不在。 – 2012-02-29 20:13:25

+0

@DmitryKachko:好的,我應該限制我的答案STL風格的迭代器。它看起來像Java迭代器確實攜帶一些容器的連接。無論如何,您必須檢查* container *的文檔 - 我認爲容器不會跟蹤所有迭代器,並在它們失效時發出信號。 – 2012-02-29 20:20:27

+0

好的,但它可以有方法來檢查有效性,例如。奇怪的是,這樣的方法不存在,但我問的可能是有一些技巧來引發異常或什麼。 – 2012-02-29 20:55:18