C list的使用總結及常用list操作

2021-09-01 09:28:39 字數 4454 閱讀 9280

一、list定義:

list是stl實現的雙向鍊錶,與向量(vectors)相比, 它允許快速的插入和刪除,但是隨機訪問卻比較慢。

特點:記憶體空間不連續,如果需要大量的插入insert和刪除erase,而不關心隨機訪問,則用list

使用時需要新增標頭檔案    #include 

二、list定義和初始化:

listlst1;          //建立空list

listlst2(5);       //建立含有5個元素的list

listlst3(3,2);  //建立含有3個元素的list

listlst4(lst2);    //使用lst2初始化lst4

listlst5(lst2.begin(),lst2.end());  //同lst4

三、list常用操作函式:

lst1.assign() 給list賦值 

lst1.back() 返回最後乙個元素 

lst1.begin() 返回指向第乙個元素的迭代器 

lst1.clear() 刪除所有元素 

lst1.empty() 如果list是空的則返回true 

lst1.end() 返回末尾的迭代器 

lst1.erase() 刪除乙個元素 

lst1.front() 返回第乙個元素 

lst1.get_allocator() 返回list的配置器 

lst1.insert() 插入乙個元素到list中 

lst1.max_size() 返回list能容納的最大元素數量 

lst1.merge() 合併兩個list 

lst1.pop_back() 刪除最後乙個元素 

lst1.pop_front() 刪除第乙個元素 

lst1.push_back() 在list的末尾新增乙個元素 

lst1.push_front() 在list的頭部新增乙個元素 

lst1.rbegin() 返回指向第乙個元素的逆向迭代器 

lst1.remove() 從list刪除元素 

lst1.remove_if() 按指定條件刪除元素 

lst1.rend() 指向list末尾的逆向迭代器 

lst1.resize() 改變list的大小 

lst1.reverse() 把list的元素倒轉 

lst1.size() 返回list中的元素個數 

lst1.sort() 給list排序 

lst1.splice() 合併兩個list 

lst1.swap() 交換兩個list 

lst1.unique() 刪除list中重複的元素

四、list使用示例:

示例1:遍歷list

//迭代器法

for(list::const_iteratoriter = lst1.begin();iter != lst1.end();iter++)

cout示例2:

#include #include #include #include #include using namespace std;

typedef listlistint;

typedef listlistchar;

void main()

cout << endl;

int result = accumulate(listone.begin(), listone.end(), 0);

cout << "sum=" << result << endl;

cout << "------------------" << endl;

//用listchar建立乙個list物件

listchar listtwo;

//宣告i為迭代器

示例3:

#include #include #include using namespace std;

typedef listintlist;

//從前向後顯示list佇列的全部元素

void put_list(intlist list, char *name)

//測試list容器的功能

void main(void)

{ //list1物件初始為空

intlist list1;

intlist list2(5, 1);

intlist list3(list2.begin(), --list2.end());

//宣告乙個名為i的雙向迭代器

intlist::iterator i;

put_list(list1, "list1");

put_list(list2, "list2");

put_list(list3, "list3");

list1.push_back(7);

list1.push_back(8);

cout << "list1.push_back(7) and list1.push_back(8):" << endl;

put_list(list1, "list1");

list1.push_front(6);

list1.push_front(5);

cout << "list1.push_front(6) and list1.push_front(5):" << endl;

put_list(list1, "list1");

list1.insert(++list1.begin(), 3, 9);

cout << "list1.insert(list1.begin()+1,3,9):" << endl;

put_list(list1, "list1");

//測試引用類函式

C list類及常用介面實現

因為list時雙向鍊錶,其內部存的不只有資料,還有前後指標,直接解引用會出錯 還有它的物理儲存空間不是連續的,操作是向前 後偏移一定的大小,而下乙個緊挨的物理空間可能是沒有申請的 所以將原生態指標進行封裝,因迭代器使用形式與指標完全相同,因此在自定義的類中必須實現以下方法 指標可以解引用,迭代器的類...

C List 方法的使用

class collection private void initlist public void listtest console.writeline n 根據id分組 var query list.groupby pet pet.id ienumerable query list.groupb...

C List列表的使用

列表list的建立和使用 建立列表 列表可以儲存任何型別的資料,在建立列表物件的時候首先要指定你要建立的這個列表要儲存什麼型別的 泛型 listscorelist new list 建立了乙個空的列表 通過型別後面的 來表示這個列表儲存的資料的型別 var scorelist new list va...