第十三,四節 深度探索list(上,下)
-
源代碼實作list Gnu2.9
- 注意
代碼和圖示的位置node
- 實作前閉後開,增加一個空白節點
- 用的配置設定器alloc
-
智能指針,需要知道結點node的next指針Iterator
- 除了array和vector,其他容器的iterator都是一個class
-
class 實作iterator
- 必須做至少5個
,很多操作符重載typedef
- 前++
其中i作為對象,++i
傳回引用,這樣可以進行兩次前++self& operator++(){}
- 後++
i++
,阻止兩次後++self operator++(int){}
-
對的++++i
;不允許兩次後++++(++i)
(i++)++
-
的疊代器解引用,不像vetor直接是資料,而是list
(*iter).data
-
的改善地方,下圖中有說明:連結清單指向自己Gnu 4.9
- G4.9類之間的關系變得複雜
第十五節 疊代器的設計原則和Iterator Traits的作用與設計
-
需要遵循的原則,必須提供5種Iterator
associated types
- 算法向iterator提問,獲得一些類型type,友善處理
- 問答式
-
特性,特質Traits
- 算法的參數,可能是iterator或者普通指針,通過中間層traits實作
- 算法執行時,根據傳入的參數,選擇相應的
iterator_traits
- 标準庫中還有其他的traits:
等type traits , char traits, allocator traits, pointer traits, array traits
C/C++基本文法學習
STL
C++ primer