天天看点

STL之stack、queue

1.stack简介:

stack是STL中的一种容器适配器,被设计来用于操作先进后出(First In Last Out,FILO)结构的情景,在这种情况下,元素的插入和删除都只能在容器的尾部进行。

元素只能在这个特定的容器的后面,也就是栈的顶部,进行出栈和入栈操作。

使用stack需要声明头文件#include< stack>

2.stack的构造

构造satck:默认构造形式:stack< Type>stkName;

如:

stack< int>s1;//定义一个存放int的stack容器,并命名为s1
stack<flaoat>s2;//定义一个存放float的容器
stack<string>s3;
//尖括号内还可以设置指针类型或者是自定义类型
           

3.stack的基本操作函数

push(x)	//入栈操作(加入栈顶),将x加入栈顶
pop()	//出栈操作(删除栈顶),只是出栈,没有返回值
top()	//返回第一个元素(栈顶元素)
size()	//返回栈中的元素个数
empty()	//当栈为空时返回true
swap()	//交换两个栈的内容(所有元素)
           

4.⚠️对一个空栈进行pop(),会导致程序异常终止,应该使用empty()提前检查

5.stack的拷贝构造与赋值

stack对象的拷贝构造形式:stack< Type>stk2(stk1);
stack的赋值形式:stk2 = stk1;
例如:
stack<int>s1;	
stack<int>s2(s1);//拷贝s1并构造s2
stack<int>s3;
s3 = s1;		//将s1的值赋给s3
           

6.stack的关系运算符

== != > >= < <=

a.用于比较两个栈是否相等,首先判断大小是否相等,然后再通过判断元素之间是否相等,将会在第一个不相等的地方停止

b.!= 和==是相反的。只要大小不同或者是有一个元素不一样就是不相等的

c.<是从第一元素开始比较当发现不小于时停止,如果一个栈时另一个栈的前缀,那么长的栈大,余下3种关系运算符原理相同。

返回值都是0,1

7.queue简介:

quene是STL中的一种容器适配器,被设计来用于操作先进先出(First In First Out,FIFO)结构的情景,在这种情况下,元素的插入在容器的尾部进行,删除在容器的头部进行。

使用quene需要声明头文件#include< queue>

8.queue的构造(与stack相同)

构造queue:默认构造形式:stack< Type>stkName;

如:

stack< int>s1;//定义一个存放int的queue容器,并命名为s1
stack<flaoat>s2;//定义一个存放float的容器
stack<string>s3;
//尖括号内还可以设置指针类型或者是自定义类型
           

9.queue的基本操作函数

push(x)	//入队操作(加入队尾),将x加入队尾
pop()	//出队操作(删除队首),只是出队,没有返回值
//top()返回第一个元素(栈顶元素)
front()	//返回第一个元素(队首元素)
back()	//返回最后一个元素(队尾元素)
size()	//返回队列中的元素个数
empty()	//当队列为空时返回true
swap()	//交换两个队列的内容(所有元素)
           

总结:

stack的应用:

递归算法

括号匹配检测

DFS算法

······

queue的应用:

保存暂时不用的数据(存储地址)

BFS算法