list容器
雙向循環鏈表list
list是雙向循環鏈表,每個元素都知道前面一個元素和后面一個元素。
list和vector的差別:
樣例:
int data[6]={3,5,7,9,2,4}; list<int> lidata(data, data+6); lidata.push_back(6); ...? ? ? ?list初始化時,申請的空間大小為6。存放下了data中的6個元素,當向lidata插入第7個元素“6”時。list申請新的節點單元,插入到list鏈表中,數據存放結構例如以下圖所看到的:
?
? ? ?list每次添加一個元素,不存在又一次申請內存的情況,它的成本是恒定的。
而vector每當添加關鍵元素的時候,都須要又一次申請新的更大的內存空間,會調用元素的自身的復制構造函數。存在構造成本。在銷毀舊內存的時候,會調用析構函數。存在析構成本。所以在存儲復雜類型和大量元素的情況下,list比vector更有優勢!?
? ?List是一個雙向鏈表,雙鏈表既能夠向前又能夠向后鏈接它的元素。
? ?List將元素按順序儲存在鏈表中,與向量(vector)相比, 它同意高速的插入和刪除。可是隨機訪問卻比較慢。
assign() 給list賦值?
back() 返回最后一個元素?
begin() 返回指向第一個元素的迭代器?
clear() 刪除全部元素?
empty() 假設list是空的則返回true?
end() 返回末尾的迭代器?
erase() 刪除一個元素?
front() 返回第一個元素?
get_allocator() 返回list的配置器?
insert() 插入一個元素到list中?
max_size() 返回list能容納的最大元素數量?
merge() 合并兩個list?
pop_back() 刪除最后一個元素?
pop_front() 刪除第一個元素?
push_back() 在list的末尾加入一個元素?
push_front() 在list的頭部加入一個元素?
rbegin() 返回指向第一個元素的逆向迭代器?
remove() 從list刪除元素?
remove_if() 按指定條件刪除元素?
rend() 指向list末尾的逆向迭代器?
resize() 改變list的大小?
reverse() 把list的元素倒轉?
size() 返回list中的元素個數?
sort() 給list排序?
splice() 合并兩個list?
swap() 交換兩個list?
unique() 刪除list中反復的元素
轉載于:https://www.cnblogs.com/yxwkf/p/5167317.html
總結
- 上一篇: Javascript面向对象编程(一):
- 下一篇: Leetcode题解(20)