1. 程式人生 > >STL List(列表) C++

STL List(列表) C++

標頭檔案:#include<list>

定義:list<資料型別> 變數名;//此處的變數型別可以為任意型別

例:list<資料型別> L

list在記憶體分配的時候不像vector一樣分配連續的空間,只能使用迭代器遍歷list的資料;(雙向連結串列)

list適用於頻繁的插入刪除操作,對於隨機存取需要遍歷整個list

常用方法:(加粗字型為常用方法

正向迭代器:begin()和end();//begin()指向向量的第一個元素、end()指向向量的最後一個元素的下一個位置 ;

反向迭代器:rbegin()和rend();//rbegin()指向向量的最後一個元素、rend()指向第一個元素之前的位置;

empty();//判斷list是否為空;

size();    //返回list的實際大小;

front();  //獲取list的第一個元素;

back();  //獲取list最後一個元素;

clear();  //清除list中所有的元素;

insert(); //在list中插入資料 ;insert(pos,num) 在pos位置插入num;

erase();  //刪除list中的元素;erase(pos) 刪除list中pos位置的元素;

由於list用於模擬雙向連結串列,可以進行頭部插入和尾部插入,而且兩端都可以進行彈出操作;

頭部的插入和彈出:push_front(num);pop_front();

尾部的插入和彈出:push_back(num);pop_back();

交換兩個連結串列:swap(list1,list2);//交換連結串列,或者 list1.swap(list2)

重新定義連結串列大小:resize(n);  //n為新建後list的大小,如果擴大多出的部分用0代替,如果縮小直接刪除;

                             resize(n,num);//n為新建後list的大小,如果擴大多出的部分用num代替,如果縮小直接刪除;

有序連結串列的合併:merge(list1,list2);//合併兩個有序連結串列並使之有序,或者 list1.merge(list2)、list1.merge(list2,cmp)

                         這裡的cmp為自定義的比較方式,同sort用法一致;

sort()或者sort(cmp);//list排序方式,預設的排序方式為升序;

reverse();//翻轉整個連結串列;

remove(num);刪除list中的值為num元素;remove_if(comp);comp為自定義的檢測方法;

list1.splice( 位置,list2);//選取將list2連結到list1 選定位置之後,並釋放list2;