目錄
創(chuàng)新互聯(lián)公司專注于網(wǎng)站建設(shè),為客戶提供成都網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)開發(fā)服務(wù),多年建網(wǎng)站服務(wù)經(jīng)驗(yàn),各類網(wǎng)站都可以開發(fā),品牌網(wǎng)站制作,公司官網(wǎng),公司展示網(wǎng)站,網(wǎng)站設(shè)計(jì),建網(wǎng)站費(fèi)用,建網(wǎng)站多少錢,價(jià)格優(yōu)惠,收費(fèi)合理。導(dǎo)入
一、棧stack / 隊(duì)列queue / 優(yōu)先級隊(duì)列priority_queue
1、數(shù)據(jù)結(jié)構(gòu)簡介
(1)棧
(2)隊(duì)列
2、定義
3、函數(shù)
二、映射map
結(jié)語
導(dǎo)入想必大家在寫程序的過程中都遇到過一些麻煩吧?比如深搜和廣搜要用到棧和隊(duì)列,于是......
class Stack{
private:
int nElems, top;
int * p;
public:
Stack(int n){...}
Stack(){...}
void push(int a){...}
void pop(){...}
void printStack(){...}
void size(){...}
};
class Queue{
......
};
但是,實(shí)際上,C++的STL標(biāo)準(zhǔn)庫就為我們提供了很多全類型通用的諸如棧、隊(duì)列、集合等常用數(shù)據(jù)結(jié)構(gòu)。接下來,小編將一一介紹這些。
一、棧stack / 隊(duì)列queue / 優(yōu)先級隊(duì)列priority_queue 1、數(shù)據(jù)結(jié)構(gòu)簡介眾所周知,棧、隊(duì)列、優(yōu)先級隊(duì)列都是比較常用的數(shù)據(jù)結(jié)構(gòu)。接下來,小編將先介紹一下這些結(jié)構(gòu)的用法(老手可以跳過了)
(1)棧棧(stack)是一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu)。什么叫先進(jìn)后出呢?看圖。
圖1
如圖1,這是一個(gè)容量為5的空棧,棧頂在最下邊。在圖2中,我們往棧頂插入了一個(gè)元素14,棧頂上移一個(gè)單位;
圖3圖4
然后,我們又依次插入了45和11兩個(gè)元素(圖3)。
最后,從棧頂依次彈出三個(gè)元素,得到出棧序列114514( bushi?
(2)隊(duì)列先進(jìn)先出的序列,沒什么好說的
2、定義通常,STL標(biāo)準(zhǔn)庫的數(shù)據(jù)結(jié)構(gòu)定義都是這樣的:
數(shù)據(jù)結(jié)構(gòu)類型<存儲(chǔ)類型>結(jié)構(gòu)名
例如,要定義一個(gè)名為s1,存儲(chǔ)整型的棧,則代碼為:
#includestacks1;
注意:在使用STL庫函數(shù)時(shí),一定要先插入頭文件,如棧的頭文件為stack,隊(duì)列為queue等,當(dāng)然你也可以直接用萬能頭文件bits/stdc++.h,這樣就當(dāng)我沒說好了qwq
3、函數(shù)用途:往結(jié)構(gòu)內(nèi)插入數(shù)據(jù),例:
stacks1;
s1.push(233);
當(dāng)然,這里的stack也可以換成queue或priority_queue等,后文不再贅述
其余常用函數(shù)用法如下:
stacks1;
queueq1;
s1.pop() 或 q1.pop() //從一定位置(棧頂、隊(duì)頭)取出元素
s1.top() 或 q1.front() //獲取棧頂或隊(duì)頭元素
s1.size()或 q1.size() //獲取結(jié)構(gòu)內(nèi)元素?cái)?shù)量
二、映射map寫程序的過程中,我們經(jīng)常需要保存一個(gè)string類型的用戶名和用戶的數(shù)據(jù),于是我們的代碼通常會(huì)這么寫:
#define MaxN 233
struct Person{
string name;
int age;
}m[MaxN];
int find(string s){
for(int i = 0; i< MaxN; i++)
if(m[i].name == s) return i;
return -1;
}
為了直到名字s對應(yīng)的下標(biāo)或數(shù)據(jù),我們通常會(huì)寫一個(gè)find函數(shù),這就讓我們的代碼平添了五行,非常不舒服 (bushi) 那有沒有一種可能,我們的代碼可以寫成這樣呢?
m["233"] = 0;
cout<< m["233"];
這里,我們使用字符串作為下標(biāo),用中括號(hào)訪問一個(gè)整形數(shù)據(jù),還做了修改和輸出。
若是在平常,這種代碼肯定是不存在的(除非你有這個(gè)閑工夫心思去重載運(yùn)算符)
但,是!今天,時(shí)代變了!我們可以寫出下面幾行代碼:
#include
這里,我們導(dǎo)入了頭文件map,然后我們用一種奇怪的方式訪問到了以字符串作為下標(biāo)的數(shù)據(jù)。
這就是用到了STL的一種神奇數(shù)據(jù)結(jié)構(gòu)——map映射。
具體定義時(shí),我們可以這么寫:
map<下標(biāo)類型, 數(shù)據(jù)類型>結(jié)構(gòu)名
與前面幾個(gè)數(shù)據(jù)結(jié)構(gòu)的定義不同,這次的尖括號(hào)里有兩個(gè)參數(shù),分別代表訪問的下標(biāo)類型和需要存儲(chǔ)的數(shù)據(jù)類型(別問我為什么參數(shù)名那么通俗,問就是我取的名)
制作不易,點(diǎn)個(gè)贊唄~
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站欄目:C++STL常用數(shù)據(jù)結(jié)構(gòu)-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://newbst.com/article26/iojjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、App開發(fā)、定制網(wǎng)站、企業(yè)建站、搜索引擎優(yōu)化、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容