1、stack
stack 模板类的定义在头文件中。
stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要
的,在不指定容器类型时,默认的容器类型为deque。
定义stack 对象的示例代码如下:
stack<int> s1;
stack<string> s2;
stack 的基本操作有:
入栈,如例:s.push(x);
出栈,如例:s.pop();注意,出栈操作只是删除栈顶元素,并不返回该元素。
访问栈顶,如例:s.top()
判断栈空,如例:s.empty(),当栈空时,返回true。
访问栈中的元素个数,如例:s.size()。
2、queue
queue 模板类的定义在头文件中。
与stack 模板类很相似,queue 模板类也需要两个模板参数,一个是元素类型,一个容器类
型,元素类型是必要的,容器类型是可选的,默认为deque 类型。
定义queue 对象的示例代码如下:
queue q1;
queue q2;
有关queue的一些函数:
q.size();//返回q里元素个数
q.empty();//返回q是否为空,空则返回1,否则返回0
q.push(k);//在q的末尾插入k
q.pop();//删掉q的第一个元素
q.front();//返回q的第一个元素
q.back();//返回q的末尾元素
代码:
# include <stdio.h>
#include <iostream>
#include<algorithm>
# include <queue>
using namespace std;
queue <int> q;
int main(void)
{
int k,j;
scanf("%d",&j);
for(int i=0;i<j;i++)
{
scanf("%d",&k);
q.push(k); //将k入队列
}
int t=q.size(); //返回队列的元素个数
printf("*%d*",t); //打印出来验证个数
for(int i=0;i<j;i++)
{
printf("%d",q.front()); //访问队列的首元素,但不删除
q.pop(); //删除首元素
}
return 0;
}
其中还有优先队列的函数,如:
(从大到小) priority_queue<int,vector,less >q;
(从小到大) priority_queue<int,vector,greater >q;
代码如下:
#include<cstdio>
#include<queue>
using namespace std;
priority_queue<int,vector<int>,less<int> >q; //从大到小输出
//priority_queue<int,vector<int>,greater<int> >q;//从小到大
int main()
{
int k=0;
for(int i=0;i<10;i++)
{
scanf("%d",&k);
q.push(k);
}
while(!q.empty()) //q.empty(),如果队列为空返回1,否则为-1;
printf("%d ",q.top()),q.pop();
}
你随便输入几个数字,最终得到的是从大到小的数字。