1. 程式人生 > >c++ STL List查詢遍歷及各成員函式用法詳細介紹

c++ STL List查詢遍歷及各成員函式用法詳細介紹

c++ STL List將元素按順序儲存在連結串列中. 與 向量(vectors)相比, 它允許快速的插入和刪除,但是隨機訪問卻比較慢.c++ STL List就是一雙向連結串列,可高效地進行插入刪除元素。包括構造、方法等。 c++ STL List構造方法...

    c++ STL List將元素按順序儲存在連結串列中. 與 向量(vectors)相比, 它允許快速的插入和刪除,但是隨機訪問卻比較慢.c++ STL List就是一雙向連結串列,可高效地進行插入刪除元素。包括構造、方法等。

    c++ STL List構造方法:

list<int> c0; //空連結串列

list<int> c1(3); //建一個含三個預設值是0的元素的連結串列

list<int> c2(5,2); //建一個含五個元素的連結串列,值都是2

list<int> c4(c2); //建一個c2的copy連結串列

list<int> c5(c1.begin(),c1.end()); ////c5含c1一個區域的元素[_First, _Last)。

    c++ STL List其它成員方法:

assign()給list賦值

back()返回最後一個元素

begin()返回指向第一個元素的迭代器

clear()刪除所有元素

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

end()返回末尾的迭代器

erase()刪除一個元素

front()返回第一個元素

get_allocator()返回list的配置器

insert()插入一個元素到list中

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

merge()      合併兩個list

pop_back()刪除最後一個元素

pop_front()刪除第一個元素

push_back()在list的末尾新增一個元素

push_front()在list的頭部新增一個元素

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

remove()從list刪除元素

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

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

resize()改變list的大小

reverse()把list的元素倒轉

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

sort()給list排序

splice()合併兩個list

swap()交換兩個list

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

c++ STL List具體用法舉例

list物件的宣告構造():

A.      list<int>c0;                 //空連結串列

B.      list<int>c1(3);             //建一個含三個預設值是0的元素的連結串列

C.      list<int>c2(5,2);            //建一個含五個元素的連結串列,值都是2

D.      list<int>c4(c2);             //建一個c2的copy連結串列

E.       list<int>c5(c1.begin(),c1.end());  

//c5含c1一個區域的元素[_First, _Last)。

1.       assign()分配值,有兩個過載:

c1.assign(++c2.begin(), c2.end()) //c1現在為(50,60)。

c1.assing(7,4)  //c1中現在為7個4,c1(4,4,4,4,4,4,4)。

2.       back()返回最後一元素的引用:

int i=c1.back();  //i=30

const int i=c2.back();  //i=60且不可修改

3.       begin()返回第一個元素的指標(iterator)

citer=c1.begin();    // *citer=10

list<int>::const_iterator cciter=c1.begin(); //*cciter=10且為const。

4.       clear()刪除所有元素

c1.clear();   //c1為空  c1.size為0;

5.       empty()判斷是否連結串列為空

bool B=c1.empty(); //若c1為空B=true;否則B=false;

6.       end()返回最後一個元素的下一位置的指標(list為空時end()=begin())

citer=c1.end(); //*(--citer)=30;

同begin()返回一個常指標,不能修改其中元素。

7.       erase()刪除一個元素或一個區域的元素(兩個過載)

c1.erase(c1.begin()); // c1現為(20,30);

c1.erase(++c1.begin(),c1.end()); // c1現為(10);

8.       front() 返回第一個元素的引用:

int i=c1.front(); //i=10;

const int i=c1.front(); //i=10且不可修改。

9.       insert()在指定位置插入一個或多個元素(三個過載):

c1.insert(++c1.begin(),100);   //c1(10,100,20,30)

c1.insert(c1.begin(),2,200);  //c1(200,200,20,30);

c1.insert(++c1.begin(),c2.begin(),--c2.end());

//c1(10,40,50,20,30);

10.    max_size()返回連結串列最大可能長度(size_type就是int型):

list<int>::size_type i=c1.max_size();  //i=1073741823

11.    merge()合併兩個連結串列並使之預設升序(也可改):

c2.merge(c1);   //c1現為空;c2現為c2(10,20,30,40,50,60)

c2.merge(c1,greater<int>()); //同上,但c2現為降序

12.    pop_back()刪除連結串列尾的一個元素

c1.pop_back()  //c1(10,20);

13.    pop_front()刪除連結串列頭的一元素

c1.pop_front() //c1(20,30)

14.    push_back()增加一元素到連結串列尾

c1.push_back(100) //c1(10,20,30,100)

15.    push_front()增加一元素到連結串列頭

c1.push_front(100) //c1(100,10,20,30)

16.    rbegin()返回連結串列最後一元素的後向指標(reverse_iterator or const)

list<int>::reverse_iterator riter=c1.rbegin(); //*riter=30

17.    rend()返回連結串列第一元素的下一位置的後向指標

list<int>::reverse_iterator riter=c1.rend(); // *(--riter)=10

18.    remove()刪除連結串列中匹配值的元素(匹配元素全部刪除)

c1.remove(10);     //c1(20,30)

19.    remove_if()刪除條件滿足的元素(會遍歷一遍連結串列)

c1.remove_if( is_odd<int> () ); //c1(10,20,30) 

//is_odd自己寫(表奇數) 

20.    resize()重新定義連結串列長度(兩過載):

c1.resize(4)  //c1(10,20,30,0)用預設值填補

c1.resize(4,100) //c1(10,20,30,100)用指定值填補

21.    reverse()反轉連結串列:

c1.reverse(); //c1(30,20,10)

22.    size()返回連結串列中元素個數

list<int>::size_type i=c1.size();  //i=3

23.    sort()對連結串列排序,預設升序(可自定義)

c1.sort();  //c1(10,20,30)

c1.sort(great<int>()); //c1(30,20,10)

24.    splice()對兩個連結串列進行結合(三個過載)

c1.splice(++c1.begin(),c2);

//c1(10,40,50,60,20,30) c2為空 全合併

c1.splice(++c1.begin(),c2,++c2.begin());

//c1(10,50,20,30) ; c2(40,60) 指定元素合併

c1.splice(++c1.begin(),c2,++c2.begin(),c2.end());

//c1(10,50,60,20,30); c2(40) 指定範圍合併

25.    swap()交換兩個連結串列(兩個過載)

c1.swap(c2);  //c1(40,50,60);

swap(c1,c2);  //c1(40,50,60)

26.    unique()刪除相鄰重複元素(斷言已經排序,因為它不會刪除不相鄰的相同元素)

c1.unique();

//假設c1開始(-10,10,10,20,20,-10)則之後為c1(-10,10,20,-10)

c1.unique(mypred); //自定義謂詞

相關推薦

c++ STL List查詢成員函式用法詳細介紹

c++ STL List將元素按順序儲存在連結串列中. 與 向量(vectors)相比, 它允許快速的插入和刪除,但是隨機訪問卻比較慢.c++ STL List就是一雙向連結串列,可高效地進行插入刪除元素。包括構造、方法等。 c++ STL List構造方法...  

Java中 List三種方法

Java List遍歷方法 及其效率對比 package com.zbalpha.test; import java.util.ArrayList; import java.util.Iterator; import java.util.List;

C++ STL list的初始化、新增、、插入、刪除、查詢、排序、釋放

list是C++標準模版庫(STL,Standard Template Library)中的部分內容。實際上,list容器就是一個雙向連結串列,可以高效地進行插入刪除元素。 使用list容器之前必須加上STL的list容器的標頭檔案:#include<list>;  

C++ STL list 刪除問題

C++ STL list 遍歷刪除崩潰 錯誤用法一 下面這種用法會在for的地方崩潰,分析 第一次for迴圈的時候 it=0,當t.erase(it)執行完成之後 it就變成了 -17891602 表明it不能再作為迭代器進行運算,自然會報錯。 #include <m

使用C#操作二叉樹的插入查詢和列印(程式碼)

Node類: public class Node { public int Item { set; get; } //節點資料 public Node LeftChild { set; get; } //左子節點的引用

JSP頁面通過c:forEach標籤迴圈List集合

<c:forEach>標籤有如下屬性: 屬性 描述 是否必要 預設值 items 要被迴圈的資訊 否 無 begin 開始的元素(0=第一個元素,1=第二個元素) 否 0 end 最後一個元

C語言實現二叉樹的各種求解深度

#include<stdio.h> #include<malloc.h> #define MAXSIZE 100 typedef char dataType; //二叉樹結構 typedef struct bnode{ dataType data; struct bnode *lC

c#利用反射輕鬆類獲取其所有屬性屬性值

利用反射可以輕鬆的獲取這些資訊 類的寫法: namespace ClassLibrary1 {     public class Class1     {         public string Name         {             get { ret

資料結構(六)——二叉樹 前序、中序、後序、層次非遞迴實現 查詢、統計個數、比較、求深度的遞迴實現

一、基本概念每個結點最多有兩棵子樹,左子樹和右子樹,次序不可以顛倒。性質:1、非空二叉樹的第n層上至多有2^(n-1)個元素。2、深度為h的二叉樹至多有2^h-1個結點。滿二叉樹:所有終端都在同一層次,

陣列求和(C語言)

最近學習了C語言的入門,作為陣列的綜合練習,在此寫下相關經驗及程式碼。 題目:在一個長度為10的整型數組裡面,儲存了班級10個學生的考試成績。要求編寫5個函式,分別實現計算考試的總分,最高分,最低分,平均分和考試成績降序排序。 程式碼部分:#include <stdi

C#中數組的例子

bsp 輸出 ray 最大的 一個 nbsp array 索引 int 例、有一個數組,變量名為arrys,請輸出該數組每一項值。 重復行為:輸出一個數組項 Console.Writeline(arrays[i])

(C++ STL)list的實現

throw 實現 locate 當前 模板類 spl 會有 splice 重定義 #include <iostream> using namespace std; //採用叠代器和空間配置器所實現的雙向鏈表的基本功能 template<

C++ STL list詳解

c++ back main 雙向鏈表 第一個元素 cti ans :link 獲得 一.解釋: list是一種序列式容器。list容器完成的功能實際上和數據結構中的雙向鏈表是極其相似的,list中的數據元素是通過鏈表指針串連成邏輯意義上的線性表,list不僅是一個雙向鏈表,

STL經常使用算法for_each和transform的比較

end clas -m return checked int code 返回值 range for_each()和transform()算法比較 1)STL 算法 – 改動性算法 for_each() copy() copy_backward()

Java中List集合的三種方式

asn tex iter for nbsp next next() ray string 首先創建一個List集合: List<String> list = new ArrayList<String>();list.add("name"); list

[黑馬PHP教程]C. 數組的(必記)

ant data span lis borde alt 使用 指針 font 一,利用foreach遍歷數組二,數組的指針操作與遍歷原理 三,數組遍歷流程原理 四,利用 for循環 和 next 遍歷數組 五,利用 while循環+ each()+ list()

c++ stl在acm的入門使用

進行 cout 模板庫 begin 依賴 post blank vector template stl的全稱為Standard Template Library,即為標準模板庫,它主要依賴於模板,而不是對象,所以你需要對這個模板進行實例化,選擇你要使用的類型。 模板是一個怎

list過程中的add/remove

com index 遍歷集合 很多 pub iterator clas util http 平時開發過程中,很多人估計都遇到過一個問題:在遍歷集合的的過程中,進行add或者remove操作的時候,會出現2類錯誤,包括:java.util.ConcurrentModifica

jsp c標簽不的方法

style clas class jsp 方法 bsp item nbsp data 生產中遇到過不需要遍歷的事情。 一般遍歷必須要 <c:forEach items="${resultObj.xxx}" var="data" varStatus="status"&

c++17 filesystem, regex 目錄

擴展 clas include directory dir 正則 cout 目錄 rect c++17 FS 還是挺好用的 #include<filesystem> #include<regex> //正則表達式 namespace fs =