list以雙鏈表的形式管理元素:ios
使用list時,須要加上頭文件:spa
#include <list>
list與array,vector,deque的不一樣之處:指針
Operation | Effect |
c.unique() | 移除相同元素值的元素,使惟一 |
c.unique(op) | 當op()爲true時移除相同元素,使惟一 |
c.splice(pos, c2) | 將c2的所有元素移動到c的pos位置前 |
c.splice(pos, c2, c2pos) | 將c2的c2pos位置的元素移動到c的pos位置前 |
c.splice(pos, c2, c2beg, c2end) | 將c2的[c2beg, c2end)元素移動到c的pos位置前 |
c.sort() | 以<排序全部元素 |
c.sort(op) | 以op()排序全部操做 |
c.merge(c2) | 假定兩container中的元素都是已排序的,移動c2的元素到c中,並保持排序 |
c.merge(c2, op) | 假定兩container中的元素都是根據op()排序的,移動c2的元素到c中,並保持op()排序 |
c.reverse() | 顛倒全部元素的順序 |
#include<list> #include<iostream> #include<algorithm> #include<iterator> using namespace std; void printLists(const list<int>& l1, const list<int>& l2) { cout << "list1: "; copy(l1.cbegin(), l1.cend(), ostream_iterator<int>(cout, " ")); cout << endl << "list2: "; copy(l2.cbegin(), l2.cend(), ostream_iterator<int>(cout, " ")); cout << endl << endl; } int main() { //create two empty lists list<int> list1, list2; //fill both list with elements for(int i=0; i < 6; ++i) { list1.push_back(i); list2.push_front(i); } printLists(list1, list2); //insert all elements of list1 before the first element with value 3 of list2 //- find() returns an iterator to the first element with value 3 list2.splice(find(list2.begin(), list2.end(), 3), list1); printLists(list1, list2); //move first element of list2 to the end list2.splice(list2.end(), list2, list2.begin()); printLists(list1, list2); //sort second list, assign to list1 and remove duplicates list2.sort(); list1 = list2; list2.unique(); printLists(list1, list2); //merge both sorted lists into the first list list1.merge(list2); printLists(list1, list2); }
輸出:code