C++STL常用數(shù)據(jù)結(jié)構(gòu)-創(chuàng)新互聯(lián)

目錄

創(chuàng)新互聯(lián)公司專(zhuān)注于網(wǎng)站建設(shè),為客戶(hù)提供成都網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)開(kāi)發(fā)服務(wù),多年建網(wǎng)站服務(wù)經(jīng)驗(yàn),各類(lèi)網(wǎng)站都可以開(kāi)發(fā),品牌網(wǎng)站制作,公司官網(wǎng),公司展示網(wǎng)站,網(wǎng)站設(shè)計(jì),建網(wǎng)站費(fèi)用,建網(wǎng)站多少錢(qián),價(jià)格優(yōu)惠,收費(fèi)合理。

導(dǎo)入

一、棧stack / 隊(duì)列queue / 優(yōu)先級(jí)隊(duì)列priority_queue

1、數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)介

(1)棧

(2)隊(duì)列

2、定義

3、函數(shù)

二、映射map

結(jié)語(yǔ)

導(dǎo)入

想必大家在寫(xiě)程序的過(guò)程中都遇到過(guò)一些麻煩吧?比如深搜和廣搜要用到棧和隊(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)庫(kù)就為我們提供了很多全類(lèi)型通用的諸如棧、隊(duì)列、集合等常用數(shù)據(jù)結(jié)構(gòu)。接下來(lái),小編將一一介紹這些。

一、棧stack / 隊(duì)列queue / 優(yōu)先級(jí)隊(duì)列priority_queue 1、數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)介

眾所周知,棧、隊(duì)列、優(yōu)先級(jí)隊(duì)列都是比較常用的數(shù)據(jù)結(jié)構(gòu)。接下來(lái),小編將先介紹一下這些結(jié)構(gòu)的用法(老手可以跳過(guò)了)

(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)先出的序列,沒(méi)什么好說(shuō)的

2、定義

通常,STL標(biāo)準(zhǔn)庫(kù)的數(shù)據(jù)結(jié)構(gòu)定義都是這樣的:

數(shù)據(jù)結(jié)構(gòu)類(lèi)型<存儲(chǔ)類(lèi)型>結(jié)構(gòu)名

例如,要定義一個(gè)名為s1,存儲(chǔ)整型的棧,則代碼為:

#includestacks1;

注意:在使用STL庫(kù)函數(shù)時(shí),一定要先插入頭文件,如棧的頭文件為stack,隊(duì)列為queue等,當(dāng)然你也可以直接用萬(wàn)能頭文件bits/stdc++.h,這樣就當(dāng)我沒(méi)說(shuō)好了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

寫(xiě)程序的過(guò)程中,我們經(jīng)常需要保存一個(gè)string類(lèi)型的用戶(hù)名和用戶(hù)的數(shù)據(jù),于是我們的代碼通常會(huì)這么寫(xiě):

#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對(duì)應(yīng)的下標(biāo)或數(shù)據(jù),我們通常會(huì)寫(xiě)一個(gè)find函數(shù),這就讓我們的代碼平添了五行,非常不舒服 (bushi) 那有沒(méi)有一種可能,我們的代碼可以寫(xiě)成這樣呢?

m["233"] = 0;
cout<< m["233"];

這里,我們使用字符串作為下標(biāo),用中括號(hào)訪問(wèn)一個(gè)整形數(shù)據(jù),還做了修改和輸出。

若是在平常,這種代碼肯定是不存在的(除非你有這個(gè)閑工夫心思去重載運(yùn)算符)

但,是!今天,時(shí)代變了!我們可以寫(xiě)出下面幾行代碼:

#includemapm;
m["233"] = 0;

這里,我們導(dǎo)入了頭文件map,然后我們用一種奇怪的方式訪問(wèn)到了以字符串作為下標(biāo)的數(shù)據(jù)。

這就是用到了STL的一種神奇數(shù)據(jù)結(jié)構(gòu)——map映射。

具體定義時(shí),我們可以這么寫(xiě):

map<下標(biāo)類(lèi)型, 數(shù)據(jù)類(lèi)型>結(jié)構(gòu)名

與前面幾個(gè)數(shù)據(jù)結(jié)構(gòu)的定義不同,這次的尖括號(hào)里有兩個(gè)參數(shù),分別代表訪問(wèn)的下標(biāo)類(lèi)型和需要存儲(chǔ)的數(shù)據(jù)類(lèi)型(別問(wèn)我為什么參數(shù)名那么通俗,問(wèn)就是我取的名)

結(jié)語(yǔ)

制作不易,點(diǎn)個(gè)贊唄~

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站欄目:C++STL常用數(shù)據(jù)結(jié)構(gòu)-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)鏈接:http://muchs.cn/article26/iojjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名App開(kāi)發(fā)、定制網(wǎng)站、企業(yè)建站、搜索引擎優(yōu)化、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司