簡體   English   中英

我應該用什么 STL 容器來走一棵樹?

[英]What STL container should i use to walk a tree?

我不知道雙向是否意味着我可以編寫 rbegin() 或者我是否可以減少迭代器。

我有一棵只向前的樹,這不是問題。 我想走它。 我現在正在做的是每次我訪問一個分支時,我都會推送 current_iterator。 現在的問題是我正在遍歷一個分支並稱為 function。 function 需要訪問列表中之前的節點。

所以我寫了it=current_iterator並計划寫--it來倒帶。 作為一個快速測試,我寫了--o.begin()==o.end()看看我是否可以做到這一點。 我得到一個斷言錯誤。

我正在使用雙端隊列。 在迭代過程中,我可以使用什么容器來允許我在交互器 go 上前后寫= 看來我還需要保留o的副本,以便我可以比較.begin().end() 推薦的容器和技術是什么?

雙端隊列迭代器是隨機訪問的。 您可以增加和減少它們。

問題可能是您試圖減少begin返回的迭代器。 這樣做並不能保證給你列表的結尾——雙端隊列不是循環的。 (我認為這是未定義的行為,所以它可以給你結束,但我懷疑任何實現實際上都是這樣做的。)

換句話說,您是否可以減少迭代器的測試不是有效的測試; 您從中得出的不能減少迭代器的結論也是無效的。 只要新位置也有效,您就可以遞減任何有效的雙端隊列迭代器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM