列表容器 list<T> 定義在頭文件 < list > 中
列表容器是一個雙向鏈表,其迭代器類型是雙向迭代器,只能遞增或者遞減
sort()
正是由於是雙向迭代器,所以標準庫的 <algorithm> 的 sort() 函數不實用與列表容器
列表容器自定義了 sort() 函數,有一個參數,參數類型是謂詞,默認爲 less<T>() ,故默認列表的 sort() 使用“<”以升序排列
構造函數:
列表的聲明與矢量和雙端隊列的聲明一致,構造函數也類似
list<T> data( int , T ) 第一參指定元素個數,第二參指定初始元素默認值
list<T> data( iter1 , iter2 ) 使用一個序列來初始化,第二參指向序列最後一個元素的下一位置
list<T> data( int ) 構造含第一參數個數的元素的空列表
size() 返回元素個數(不是最後一個元素下標)
resize() 重設元素個數,刪去大於重設個數的,不足則以默認值補全
push_back() 後部插入
push_front() 頭部插入
back() 返回尾元素
front() 返回頭元素
insert() 多個版本的插入函數,與適量類似
clear() 清空列表元素
erase()
刪除指定位置的元素
單迭代器參數版本:刪除該迭代器所指位置的元素
雙迭代器參數版本:刪除該兩迭代器所表示的序列
remove() 刪除所有的關鍵字指定的元素
unique() 清除列表中相鄰的重複元素
splice()
刪除源列表中給定位置的元素,並插入目標列表的某個位置
四參數版本 (目標位置 , 源列表 , 起始 = begin() , 終止 = end())
特別注意: 該函數會刪除源列表的被添加入目標位置的元素序列
易錯點:當爲三個參數時,表示從第三個迭代器參數到末尾的一個序列,而不是僅僅第三個迭代器所指的單個元素
merge()
merge( 源列表 , 謂詞 = less<T>() ) 將源列表與目標列表合併,並按謂詞方法排序
特別注意: 該函數會刪除源列表的所有元素
列表指定位置迭代器的設置:
list<T>::iterator iter ;
for(int i=0 ; i < position ; i++)
++iter;
最終設置 iter 指向 下標爲 position 的位置