本文只介绍 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
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
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
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
2queue<int> q;
q.push(1);
front/back
front 和 back 分别用来返回队首与队尾元素,如:1
2
3
4queue<int> q;
q.push(1);
int a = q.front();
int b = q.back();
pop
pop 用来弹出队首元素,如:1
2
3queue<int> q;
q.push(1);
q.pop();
size
size 用来返回队列内元素的个数,用法与栈一致。