1、stack的基本用法 #include<stack>
(1)定义:
stack<int>S;
stack<string>S;
(2)基本操作:
S.push(x);x入栈。
S.pop();出栈(删除栈顶元素,不返回)。
S.top();访问栈顶元素。
S.empty();判断栈是否为空(空时返回true,否则返回false)。
#include<iostream>
#include<stack>
using namespace std;
int main()
{
/*
//创建一个栈对象,类似与vector
stack<int> S;
//压
for(int i=1;i<=10;i++)
{
S.push(i);
cout<<S.top()<<endl;
}
//栈的大小
cout<<"size:"<<S.size()<<endl;
//出栈
while(!S.empty())
{
cout<<S.top()<<endl;
S.pop();
}
*/
//栈中的元素跟容器一样可以是其他类型的,所以灵活使用可以达到很多功能
//比如逆序一个英文句子
string s;
stack<string> ss;
while(1)
{
cin>>s;
//用end控制结尾
if(s=="end")
break;
ss.push(s);
}
while(!ss.empty())
{
cout<<ss.top()<<" ";
ss.pop();
}
cout<<endl;
}
栈是一种很有用的数据结构,使用得当,能完成很多复杂的算法;
2、队列
queue的基本用法 #include<queue>
(1)定义:
queue<int>Q;
queue<double>Q;
(2)基本操作:
Q.push(x);x入队。
Q.pop();出队(弹出队列第一个元素,不返回)。
Q.front();访问队首元素。
Q.back();访问队尾元素。
Q.empty();判断队列是否为空(空时返回true,否则返回false)。
Q.size();返回队列中元素的个数。
这里就不再演示了,跟栈类似。