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 =