相對於vector容器的連續線性空間,list是乙個雙向鍊錶,它有乙個重要性質:
插入操作和刪除操作都不會造成原有的list迭代器失效,每次插入或刪除乙個元素就配置或釋放乙個元素空間。
也就是說,對於任何位置的元素插入或刪除,list永遠是常數時間。
常用函式
(1) 建構函式
list
c:建立乙個空的list
list
c1(c2) : 複製另乙個同型別元素的list
list
c(n) : 建立n個元素的list,每個元素值由預設建構函式確定
list
c(n, elem) : 建立n個元素的list,每個元素的值為elem
list
c(begin, end) : 由迭代器建立list, 迭代區間為[begin, end)
(2) 大小、判斷函式
int size() const:返回容器元素個數
bool empty() const : 判斷容器是否為空,若為空則返回true
(3) 增加、刪除函式
void push_back(const t& x) : list元素尾部增加乙個元素x
void push_front(const t& x) : list元素首元素錢新增乙個元素x
void pop_back() : 刪除容器尾元素,當且僅當容器不為空
void pop_front() : 刪除容器首元素,當且僅當容器不為空
void remove(const t& x) : 刪除容器中所有元素值等於x的元素
void clear() : 刪除容器中的所有元素
iterator insert(iterator it, const t& x) : 在迭代器指標it前插入元素x, 返回x迭代器指標
void insert(iterator it, size_type n, const t& x) : 迭代器指標it前插入n個相同元素x
void insert(iterator it, const_iterator first, const_iterator last) : 把[first, last)間的元素插入迭代器指標it前
iterator erase(iterator it) :刪除迭代器指標it對應的元素
iterator erase(iterator first, iterator last) : 刪除迭代器指標[first, last)間的元素
(4) 遍歷函式
iterator begin() :返回首元素的迭代器指標
iterator end() : 返回尾元素之後位置的迭代器指標
reverse_iterator rbegin() : 返回尾元素的逆向迭代器指標,用於逆向遍歷容器
reverse_iterator rend() : 返回首元素前乙個位置的迭代器指標
reference
front() : 返回首元素的引用
reference
back() : 返回尾元素的引用
(5) 操作函式
void sort() : 容器內所有元素排序,預設是公升序
templatevoid sort(pred pr) : 容器內所有元素根據預斷定函式pr排序
void swap(list& str) : 兩list容器交換功能
void unique() : 容器內相鄰元素若有重複的,則僅保留乙個
void splice(iterator it, list& li) : 佇列合併函式,佇列li所有函式插入迭代指標it前,x變成空佇列
void splice(iterator it, list& li, iterator first) : 佇列li中移走[first, end)間元素插入迭代指標it前
void splice(iterator it, list& li,iterator first, iterator last) :x中移走[first, last)間元素插入迭代器指標it前
void reverse() :反轉容器中元素順序
*/
C STL之雙向鍊錶list
一 list的基本使用以及耗時測試 include include qsort bsearch null includeusing namespace std const int size 100000 int main cout 插入1000000個元素耗時為 clock start endl c...
C STL之list雙向鍊錶容器
不同於採用線性表順序儲存結構的vector和deque容器,list雙向鍊錶中任一位置的元素查詢 插入和刪除,都具有高效的常數階演算法時間複雜度o 1 list技術原理 為了支援前向和反向訪問list容器的元素,list採用雙向迴圈的鍊錶結構組織資料元素,鍊錶的每個節點包括指向前驅的指標 實際資料和...
C STL之vector的使用
1.vector是表示可變大小陣列的序列容器。2.就像陣列一樣,vector也採用的連續儲存空間來儲存元素。也就是意味著可以採用下標對vector的元素進行訪問,和陣列一樣高效。但是又不像陣列,它的大小是可以動態改變的,而且它的大小會被容器自動處理。3.本質講,vector使用動態分配陣列來儲存它的...