本篇主要在之前的基礎上,更加深入的介紹stl中的雙向鍊錶容器list,包括list類模板、迭代器iterator等。1)容器list是雙向鍊錶的結構,如下:
解析:a、list是環狀的鏈式結構,在鍊錶最後有塊空白節點用於實現容器的前閉後開區間,用end()方法返回。
b、鍊錶中包含迭代器node,裡面包含操作符過載,如++來實現每個鍊錶元素向指向下乙個節點。
2)g2.9鍊錶結構
說明:容器list中復合乙個_list_node,而_list_node是鍊錶中資料,包括兩個指向自身的指標和存放的資料。
鍊錶list的模板類,如下:
鍊錶中復合的_list_node資料,如下:
鍊錶中的迭代器(是類迭代器),如下:
注意點:
a、類迭代器中通過5種typedef和操作符過載實現對node的操作,而node正是指向鍊錶資料_list_node;
b、如通過list::iterator ite宣告迭代器,foo型別就是data資料物件,可以通過*ite取得foo物件。
注意點:
a、g4.9list容器設計的迭代器類模板引數只有乙個,其它兩個都是在類中具體表示,這樣比較簡潔;
b、g2.9設計的資料node中的prev和next指向是void*,而實際上是指向node本身,並在g4.9中以這種方式實現。
STL通用容器之 list 容器
list容器 相對於vector的連續線性空間,list是乙個雙向鍊錶,它有乙個重要性質 插入操作和刪除操作都不會造成原有的list迭 器失效,每次插入或刪除乙個元素,就配置或釋放乙個元素空間。也就是說,對於任何位置的元素插入或刪除,list 遠是常數時間。1 建構函式 listc 建立乙個空的li...
Go標準容器之List
go的標準包container中包含了常用的容器型別,包括conatiner list,container heap,container ring。本篇介紹conatiner list。conatiner list實現了乙個雙向鍊錶。使用起來與其他語言的動態列表非常相似,3秒鐘便可入門。packag...
list容器之排序案例
案例描述 將per型別進行排序,per屬性中有姓名,年齡,身高,體重 排序規則 按照年齡進行公升序排列,如果年齡相同按照身高進行降序排列,如果身高相同按照體重進行公升序排列 原始碼如下 include using namespace std include include class per 有參建...