C++_stack&queue容器的基本用法

本文只介绍 stack 和 queue 的一些常见用法,不着重讨论如何实现的问题。

intro

与其他 STL 容器一样,使用 stack 与 queue,需要分别引入头文件 stack 和 queue。

stack

栈(stack)是一种后进先出(FILO)的数据结构。就好比放盘子一样,在不将叠放好的盘子全部举起的情况下,只能先依次拿最上面的盘子使用(这个比方可能不太恰当)。
栈的声明比较简单,直接:

1
stack<int> st;

其中,int可以换成其他数据类型、结构体或容器。
接下来,在看一下与栈相关的函数。

empty

empty 用来判断栈是否为空,空就返回true,否则就返回false,如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <stack>
using namespace std;

int main() {
stack<char> st;
if(st.empty()) cout << "emtpy";
else cout << "no";
return 0;
}
/*
out:
empty
*/

pop

pop 用来弹出栈顶元素,如:

1
st.pop();

push

push 用来将元素压入栈内,如:

1
st.push();

size

size 用来返回栈内元素的个数,如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <stack>
using namespace std;

int main() {
stack<int> st;
st.push(1);
st.push(2);
st.push(3);
cout << st.size();
return 0;
}
/*
out:
3
*/

top

top 用来返回栈顶元素,如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <stack>
using namespace std;

int main() {
stack<int> st;
st.push(1);
st.push(2);
st.push(3);
int a = st.top();
cout << a;
return 0;
}
/*
out:
3

注意使用前先判断栈不空,不然会产生未知错误。

queue

这里介绍的队列(queue)只是一种先进先出(FIFO)的数据结构。就跟生活中的排队是一回事,前排的人先通过。
队列的声明与栈一样,如:

1
queue<int> q;

其中,int可以换成其他数据类型、结构体或容器。
接下来,在看一下与队列相关的函数。

empty

empty 用来判断队列是否为空,空就返回true,否则就返回false,用法与栈一致。

push

push 用来将元素压入队内,如:

1
2
queue<int> q;
q.push(1);

front/back

front 和 back 分别用来返回队首与队尾元素,如:

1
2
3
4
queue<int> q;
q.push(1);
int a = q.front();
int b = q.back();

pop

pop 用来弹出队首元素,如:

1
2
3
queue<int> q;
q.push(1);
q.pop();

size

size 用来返回队列内元素的个数,用法与栈一致。


Buy me a coffee ? :)
0%