STL-list
阿新 • • 發佈:2020-07-11
一、List的建構函式
list<int>lis;//建立一個空list list<int>lis1(5);//建立一個大小為5的初始化為值為0的list{0,0,0,0,0} list<int>lis2(5,9);//建立一個大小為5,值都為9的list{9,9,9,9,9} list<int>lis3(lis2);//利用拷貝構造了一個lis2副本的list{9,9,9,9,9} list<int>lis4(lis3.begin(), lis3.end());//以區間建立了一個list{9,9,9,9,9} inta[] = { 1,3,5,2,4,6 }; list<int>lis5(a,a+6);//以陣列建立了一個list{1,3,5,2,4,6} //以輸入流迭代器建立了一個list,其中第一個引數必須加(),否則建立的不是list而是一個函式宣告 list<int>lis6((istream_iterator<int>(cin)),istream_iterator<int>());
二、List非變動操作
lis.size();//返回lis中的當前元素個數 lis.empty();//判斷lis是否為空,空返回true;其效率高於lis.size(0);lis.max_size();//返回v最大容納元素的個數 lis == lis1;//判斷lis是否等於lis1 lis != lis1;//判斷lis是否不等於lis1 lis > lis1;//判斷lis是否大於lis1 lis < lis1;//判斷lis是否小於lis1 lis <= lis1;//判斷lis是否小於等於lis1 lis >= lis1;//判斷lis是否大於等於lis1
三、List賦值操作
lis.assign(8, 10);//將n個值為elem的元素賦值給v lis.assign(lis1.begin(), lis1.end());//將lis1區間的元素賦值為lis lis = lis1;//將lis1賦值為lis lis.swap(lis1);//交換v與lis1的元素 swap(lis, lis1);//同上,此為全域性函式
四、List元素讀取
lis.back();//返回最後一個元素,不檢查最後一個元素是否存在 lis.front();//返回第一個元素,不檢查第一個元素是否存在
五、List的相關迭代器函式
lis.begin();//返回指向第一個元素的迭代器 lis.end();//返回指向最後元素下一個位置的迭代器 lis.rbegin();//返回指向最後一個元素的迭代器 lis.rend();//返回指向第一個元素前一個位置的迭代器 lis.cbegin();//返回指向第一個元素的常迭代器 lis.cend();//返回指向最後元素下一個位置的常迭代器 lis.crbegin();//返回指向最後一個元素的常迭代器 lis.crend();//返回指向第一個元素前一個位置的常迭代器
六、List的元素插入操作
int elem = 2,n = 3; lis.push_back(elem);//在末尾插入元素 lis.push_front(elem);//在頭部插入元素 lis.insert(lis.begin(), elem);//在某位置前插入元素 lis.insert(lis.end(), n, elem);//在某位置前插入n個值為elem的元素 lis.insert(lis.begin(), lis1.begin(), lis1.end());//在某位置前插入一段區間元素
\
七、List的刪除操作
lis.pop_back();//末尾刪除 lis.pop_front();//頭部刪除 lis.erase(lis.begin());//指定位置上的元素刪除 lis.erase(lis.begin(), lis.end());//指定區間中的元素刪除 lis.clear();//全部元素清除 lis.remove(elem);//移除元素elem lis.remove_if(op);//移除所有滿足條件op的元素值 lis.resize(6);//將元素的數量改為形引數,如果其大於size則多出來的元素值由default構造完成,小於size擷取後半段 lis.resize(6, 10);//將元素的數量改為形引數,如果其大於size則多出來的元素值為elem,小於size擷取後半段
八、List特殊變動操作
lis5.sort();//以operator<為準則,對所有元素排序 lis5.unique();//如果存在若干相鄰數值相等的元素,就移除重複元素; lis5.splice(lis5.end(), lis3);//將lis3的全部元素移動到lis5的pos位置前; lis5.merge(lis3);//若lis5與lis3包含相同型別元素,將lis3的全部元素轉移到lis5,並保證合併後的lis5繼續已序
lis5.reverse();//將所有元素反轉