1. 程式人生 > 實用技巧 >STL-list

STL-list

一、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}
    int
a[] = { 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();//將所有元素反轉