泰和網(wǎng)站制作網(wǎng)站空間
上次我們講了vector的大致內(nèi)容,接下來讓我們講一下棧,隊列吧!
什么是棧呢?
很簡單,我們用的羽毛球桶就是,我們?nèi)〉那?#xff0c;是最后放的,棧是一種先進后出的數(shù)據(jù)結(jié)構(gòu)。
方法函數(shù)
s.push(e) | e元素入棧 |
s.pop() | 移除棧頂元素 |
s.top() | 取得棧頂元素 |
s.empty() | 判斷棧是否為空 |
s.size() | 返回棧內(nèi)元素的個數(shù) |
什么是隊列呢?
隊列是一種先進先出的數(shù)據(jù)結(jié)構(gòu),就像我們?nèi)ド蠋?#xff0c;先排隊的先上。
方法函數(shù)
q.front() | 返回隊首元素 |
q.back() | 返回隊尾元素 |
q.push(e) | 尾部添加一個元素 |
q.pop() | 刪除第一個元素 |
q.size() | 返回隊列的元素個數(shù) |
q.empty() | 判斷是否為空 |
接下來我們講一下雙端隊列及優(yōu)先隊列:
雙端隊列(deque)
顧名思義,就是首尾都可插入和刪除的數(shù)據(jù)結(jié)構(gòu)(它可以用sort進行排序)
方法函數(shù)
d.push_back(x)/d.push_front(x) | 把x插入隊尾/隊首 |
d.back()/d.front() | 返回隊尾/隊首元素 |
d.pop_back()/d.pop_front() | 刪除隊尾/隊首元素 |
d.erase(iterator it) | 刪除某個元素 |
d.erase(iterator first,iterator last) | 刪除[first,last)的元素 |
d.empty() | 判斷其是否為空 |
d.size() | 返回其元素數(shù)量 |
d.clear() | 清空deque |
優(yōu)先隊列(十分有用)
本質(zhì)上是堆,由完全二叉樹實現(xiàn)。
初始化定義:
#include<bits/stdc++.h>
using namespace std;
int main(){priorty_queue<int> q;}//定義
函數(shù)方法
q.top() | 訪問隊首元素 |
q.push() | 入隊 |
q.pop() | 隊首元素出隊 |
q.size() | 隊列元素個數(shù) |
q.empty() | 是否為空 |
設(shè)置優(yōu)先級
#include<bits/stdc++.h>
using namespace std;
int main(){priority_queue<int> pq;//默認(rèn)為大根堆priority_queue<int,vector<int>,greater<int>> q;//小根堆,int為堆中的數(shù)據(jù)類型priority_queue<int,vector<int>,less<int>> q;}//大根堆,int為堆中的數(shù)據(jù)類型