STL 順序容器 列表list

2021-08-02 14:48:47 字數 2013 閱讀 7997

list和雙向鍊錶結構相似,每個節點包含乙個資料塊,前向指標,和後向指標,儲存在非連續的記憶體空間

很顯然,查詢操作時,只能順序查詢,不支援內部隨機訪問;不像陣列,向量vectoer,佇列可以用下標查詢

但是可以在任意序列位置插入和刪除,這是vector和queue(deque)無法比擬的

而且相比較於vector占用空間更多

list和迴圈鍊錶也有相似的地方,即:頭節點的前驅元素指標域儲存的是鍊錶中尾元素的首位址list的尾節點的後繼元素指標域則儲存了頭節點的首位址,這樣,list實際上就構成了乙個雙向迴圈鏈。

對於迭代器,只能通過「++」或「--」操作將迭代器移動到後繼/前驅節點元素處。而不能對迭代器進行+n或-n的操作,與vector等不同。

常用操作:

1.list中的建構函式:

list() 宣告乙個空列表;

list(n) 宣告乙個有n個元素的列表,每個元素都是由其預設建構函式t()構造出來的

list(n,val) 宣告乙個由n個元素的列表,每個元素都是由其複製建構函式t(val)得來的

list(first,last) 宣告乙個列表,其元素的初始值**於由區間所指定的序列中的元素 2.

list.push_back() 

list.push_front():

分別從list的末端插入,頭部插入元素。3.

list.empty():判斷list是否為空,空則返回true。

4.list.resize(): 

序列長度調整,原序列超出元素刪除;

如果擴充套件,呼叫預設建構函式t()將元素加到list末端。

如果呼叫resize(n,val),則擴充套件元素要呼叫建構函式t(val)函式進行元素構造;5.

list. clear(): 清空list中的所有元素。

6. 

list.front()和list.back(): 分別獲取list首,尾元素

list中元素是空的時候,這時候呼叫front()和back()會發生什麼呢?實際上會發生不能正常讀取資料的情況,但是這並不報錯,最好先呼叫empty()函式判斷list是否為空。

7. 

list.pop_back和list.pop_front():分別刪除最後乙個,第乙個元素;序列必須不為空,如果當list為空的時候呼叫pop_back()和pop_front()會使程式崩掉。

8. 

assign():具體和vector中的操作類似,

list.assign(n,val) 將 list中元素變為n個t(val)。

list.assign(list2.begin(),list2.end()) 將list2中的從list2.begin()到list2.end()之間的數值賦值給list。

9. 

swap():交換兩個鍊錶(兩個過載), 

list1.swap(list2); 

swap(list1,list2),

都可以完成兩個列表的交換

10.

list.reverse():完成list的反向。

11. 

merge():合併兩個鍊錶並使之預設公升序(可修改),

list.merge(list2,greater()); 

呼叫結束後list2變為空,list1中元素包含原來兩個序列中的元素,並且公升序。

預設是公升序,greater()可以省略。

12.

insert某位置插入值

list.inset(位置,值);

list和迴圈鍊錶也有相似的地方,即:頭節點的前驅元素指標域儲存的是鍊錶中尾元素的首位址,list的尾節點的後繼元素指標域則儲存了頭節點的首位址,這樣,list實際上就構成了乙個雙向迴圈鏈。

STL順序容器 list

list是乙個線性鍊錶結構,它的資料由若干個節點構成,每乙個節點都包括乙個 息塊 即實際儲存的資料 乙個前驅指標和乙個後驅指標。它無需分配指定 記憶體大小且可以任意伸縮,這是因為它儲存在非連續的記憶體空間中,並且由指 針將有序的元素鏈結起來。由於其結構的原因,list 隨機檢索的效能非常的不好,因為...

列表容器list

相對於vector來說,list比較複雜,允許插入,刪除,list節點不保證在儲存空間連續存在,所以必須有指向它的節點,它是雙向環狀鍊錶,需要乙個指標,api為 push front x 把元素 x推入 插入 到鍊錶頭部 pop front 彈出 刪除 鍊錶首元素 merge listref 把 l...

順序容器 List

assign 給list賦值 back 返回最後乙個元素 begin 返回指向第乙個元素的迭代器 clear 刪除所有元素 empty 如果list是空的則返回true end 返回末尾的迭代器 erase 刪除乙個元素 front 返回第乙個元素 get allocator 返回list的配置器 ...