常用C++STL(二)
上次的文章发布后,有小伙伴让我再写几篇,所以就来了加更篇!同时,祝大家新年快乐,万事如意!
一、队列
1.队列的特性
队列(
q
u
e
u
e
queue
queue)是一种允许在两端进行操作的线性结构。它的特点是:
①只能在队首(队列的第一个元素)弹出(
p
o
p
pop
pop)元素。
②只能在队尾(队列的最后一个元素)插入(
p
u
s
h
push
push)元素。
所以,先进去的元素总是先出来,后进去的元素总是后出来。可以看成“first in first out”,英文缩写成"
F
I
F
O
FIFO
FIFO"。
如果有小伙伴对于刚才那段话不清楚,或是感觉不好记,就可以把它想象成食堂排队打饭的情景,先来的人先打饭,后来的人后打饭。(是不是突然明白了呢?)
2.STLqueue模板
#include <queue>//凡事均需头文件,队列不例外
#include <iostream>
using namespace std;
int main(){
queue<int> q;//这样就生成了一个int类型的队列q
q.push(1);//队列可不叫insert,要用push。队列为:{1}。
q.push(2);//{1,2}
q.push(3);//{1,2,3}
q.push(1);//{1,2,3,1}队列是可以有重复元素的。
cout << q.size() << endl;//size用来统计个数。
cout << q.front() << " ";//q的第一个元素是1。
q.pop();//pop里不用传参数。{2,3,1}
while(!q.empty()){//empty()函数用来统计队列是否为空。
cout << q.front() << " ";
q.pop();
}
return 0;
}
运行结果:
4
1 2 3 1
3.STL中queue的函数。
下面就列举几个STL队列中主要的函数。
函数名 | 函数意义 |
---|---|
p u s h push push | 入队 |
p o p pop pop | 出队 |
s i z e size size | 队列中元素的个数 |
f r o n t front front | 队首元素 |
e m p t y empty empty | 判断队列是否为空 |
其他函数请详见官方参考文档。
二、栈
讲完了队列,接下来就讲栈( s t a c k stack stack)。
1.栈的特性
栈(
s
t
a
c
k
stack
stack)是一种只允许在一端进行操作的线性数据结构。它的特点是:只能在栈顶(队列的第一个元素)弹出(
p
o
p
pop
pop)元素。
所以,先进去的元素总是后出来,后进去的元素总是先出来。可以看成“first in last out”,英文缩写成"
F
I
L
O
FILO
FILO"。
如果看不懂,或是觉得不好记,就通过下面这个例子:
明明买了一桶羽毛球,他把羽毛球都倒出来了。那么,他先装进去的羽毛球就得到最后才拿出来(因为他被上面的羽毛球被挡住了)。
2.STLstack模板
#include <stack>//凡事均需头文件,栈也不例外
#include <iostream>
using namespace std;
int main(){
stack<int> st;//这样就生成了一个int类型的栈st
st.push(1);//栈和队列一样,也要用push。此时栈为:{1}。
st.push(2);//{1,2}
st.push(3);//{1,2,3}
st.push(1);//{1,2,3,1}在C++中,栈是可以有重复元素的。
cout << q.size() << endl;//size用来统计个数。
cout << st.top() << " ";//st的栈顶元素是1。
st.pop();//pop里不用传参数。{2,3,1}
while(!q.empty()){//empty()函数用来统计队列是否为空。
cout << q.front() << " ";
q.pop();
cnt++;
}
return 0;
}
运行结果:
1 2 3 1
4
3.STL中stack的函数。
下面就列举几个STL队列中主要的函数。(栈中没有clear函数)
函数名 | 函数意义 |
---|---|
p u s h push push | 入栈 |
p o p pop pop | 出栈 |
t o p top top | 栈顶元素 |
s i z e size size | 栈中元素的个数 |
e m p t y empty empty | 判断栈是否为空 |
其他函数请详见官方参考文档。