C 標準模板庫(STL)(二)

2021-09-10 06:56:04 字數 4577 閱讀 9087

標頭檔案

#include

using namespace std;

定義

//map可以將任何基本型別對映到任何基本型別	

//<>內第乙個是鍵的型別,第二個為值的型別

map mp;

//如果是字串到整形的對映,必須用string而不是char陣列,因為char陣列作為陣列,是不能當作鍵值的

mapint> mp;

訪問

//map中的鍵是唯一的

//通過下標訪問

map<

char

,int

> mp;

mp['c']=20

; mp[

'c']=30

;printf

("%d\n"

,mp[

'c']

);

//map可以用it->first訪問鍵,用it->second訪問值

//map以鍵從小到大順序自動排序

map<

char

,int

> mp;

mp['m']=20

; mp[

'r']=30

; mp[

'a']=40

;for

(map<

char

,int

>

::iterator it=mp.

begin()

;it!=mp.

end(

);it++

)

a 40

m 20

r 30

查詢元素

//find(key)返回鍵為key的對映的迭代器

map<

char

,int

> mp;

mp['m']=20

; mp[

'r']=30

; mp[

'a']=40

; map<

char

,int

>

::iterator it=mp.

find

('m');

printf

("%c %d\n"

,it->first,it->second)

;

刪除元素

mp.

erase

(it)

; mp.

erase

(key)

; mp.

erase

(first,last)

;

標頭檔案

#include

#include

新增map標頭檔案會自動新增utility標頭檔案,可以直接#include< map >

初始化,訪問元素

#include

#include

#include

using namespace std;

intmain()

hehe 5

haha 55

xixi 555

heihei 5555

比較運算元

比較規則為先以first大小為標準,first相等時再判別second大小

pair<

int,

int>p1(

5,10)

; pair<

int,

int>p2(

5,15)

; pair<

int,

int>p3(

10,5)

;if(p1printf

("p1);if

(p2printf

("p2)

;

p1作為map鍵值對其進行插入

#include

#include

using namespace std;

intmain()

return0;

}

hehe 5

haha 55

heihei 555

標頭檔案

#include

using namespace std;

定義

queue name;
出入佇列

queue<

int> q;

q.push

(x);

q.pop()

;

訪問元素

//佇列是限制性資料結構,只能訪問隊頭和隊尾元素

x=q.

front()

; x=q.

back()

;

判空

//使用pop(),front()函式前,必須用empty()判斷佇列是否為空if(

!q.empty()

)

底層是用堆實現的,隊首元素一定是當前佇列中優先順序最高的那個。

#include

#include

using namespace std;

intmain()

4

4

元素優先順序設定 基本資料型別

基本資料型別預設數字大的優先順序高,下面兩種寫法等價

priority_queue<

int> q;

priority_queue<

int,vector<

int>

,less<

int>

> q;

其中第二個引數vector< int >表示承載底層資料結構堆的容器,

第三個引數是對第乙個引數的比較類,less< int>表示數字大的優先順序大,greater< int>表示數字小的優先順序大

#include

#include

using namespace std;

intmain()

元素優先順序設定 結構體型別

在結構體中新增乙個函式,將小於號過載

過載大於號會導致編譯錯誤

#include

#include

#include

using namespace std;

struct fruit};

intmain()

梨子 4

若將小於號過載為大於號

struct fruit

};

蘋果 1

若要將該函式寫在結構體外面,需用基本資料型別的方式來定義優先佇列

#include

#include

#include

using namespace std;

struct fruitf1,f2,f3;

struct cmp};

intmain()

蘋果 1

若結構體內資料比較龐大,可使用引用來提高效率

struct cmp

};

friend bool operator <

(const fruit& f1,

const fruit&f2)

#include

#include

using namespace std;

intmain()

st.pop();

if(!st.

empty()

)return0;

}

C 標準模板庫STL

stl是標準c 庫的一部分。stl模板類為c 提供了完善的資料結構和演算法。stl的特點 型別引數化 即stl的 中可處理任意自定義型別的物件。泛型程式設計 generic programming 它以模板為基礎,弱化了 實體型別的差異,簡化了程式設計時問題抽象的模型,提供了更好的 封裝性和彈性。s...

C 標準模板庫STL

stl 標準模板庫 包括容器,演算法,迭代器 容器用來儲存資料,比如vector,list,堆疊等,string也算 一共有八個 演算法就是對容器進行操作,比如增刪改查資料 迭代器用來遍歷容器itreator 用指標的方式來遍歷容器的資料 注 平時使用的時候大部分時候我們都用上了,但是面試的時候不能...

c (標準模板庫STL)

stl是一種泛型程式設計 generic programming 容器主要有以下分類 例如 容器的成員函式begin 返回指向容器中第乙個元素的迭代器 end 返回指向容器中最後乙個元素後繼位置的迭代器。下面通過stl中提供的乙個泛型函式find 來說明迭代器與泛型演算法的關係 首先看下stl對於f...