STL总结
栈(stack)
基本定义
栈(stack)又名堆栈,是一种只允许在同一端进行数据插入和删除操作的特殊线性表。  
栈的相关概念
- 栈顶( - top):表尾,栈中允许进行数据插入和删除的一端。
- 栈底( - bottom):表头,栈中不允许进行数据操作的一端。
- 入栈或进栈( - push):将数据插入栈顶。
- 出栈或退栈( - pop):将数据取出栈顶并删除。
- 栈上溢( - full):栈内空间已满时,仍进行入栈操作,是一种空间不足的出错状态。
- 栈下溢( - empty):栈内无数据时,仍进行出栈操作,是一种数据不足的出错状态。
- 空栈:元素个数为零的栈。 
栈的常用操作
头文件
| 1 | 
构造stack容器
基本语法:stack <Type> s  
| 1 | stack <int> s; //声明存储int类型数据的栈 | 
返回栈顶元素
基本语法:s.top()  
| 1 | s.top(); //返回栈顶元素 | 
返回栈的大小
基本语法:s.size()  
| 1 | s.size(); //返回栈的大小 | 
判断栈是否为空
基本语法:s.empty()  
| 1 | s.empty(); //如果栈为空返回true,否则返回false | 
入栈操作
基本语法:s.push(elem)  
| 1 | s.push(1); //向栈顶插入元素1 | 
出栈操作
基本语法:s.pop()  
| 1 | s,pop(); //取出栈顶元素并将其删除 | 
队列(queue)
基本定义
队列是一种特殊的线性表,是一种先进先出的数据结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
栈的常用操作
头文件
| 1 | 
构造queue容器
基本语法:queue <Type> q
| 1 | queue <int> q; //声明存储int类型数据的队列 | 
返回队首元素
基本语法:q.front()
| 1 | q.front(); //返回队首元素 | 
返回队尾元素
基本语法:q.back()
| 1 | q.back(); //返回队尾元素 | 
返回队列的大小
基本语法:q.size()
| 1 | q.size(); //返回队列的大小 | 
判断队列是否为空
基本语法:q.empty()
| 1 | q.empty(); //如果队列为空返回true,否则返回false | 
入队操作
基本语法:s.push(elem)
| 1 | s.push(1); //向队尾添加元素1 | 
出队操作
基本语法:s.pop()
| 1 | s,pop(); //从队尾移除第一个元素 | 
pair
基本定义
pair可以将两个元素绑定在一起作为一个合成元素,可以节省编码时间。  
栈的常用操作
头文件
| 1 | 
由于map的内部实现中设计pair,就不需要额外再去添加utility头文件了。  
| 1 | 
构造pair容器
基本语法:pair <Typename1,Typename2> p  
| 1 | pair <int,float> p; | 
初始化
基本语法:pair <Typename1,Typename2> p(Value1,Value2)  
| 1 | pair <int,float> p(100,3.14); | 
元素访问
可以把pair定义过的东西看作一个二元结构体,该结构体中的两个元素分别是first和second,基本语法:p.first p.first  
| 1 | pair <int, float> p(100, 3.14); | 
对变量进行赋值
如果使用pair定义了一个变量,对其赋值需要使用make_pair函数(利用结构体的写法分别对其first和second赋值也是可以的),基本语法:make_pair(Value1,Value2)
| 1 | pair <int, float> p; //定义p | 
比较大小
两个pair类型之间可以进行大小比较,比较规则是先以first的大小作为标准,只有当first相等时才会判别second大小。










