容器(1)
栈 队列 优先队列
//坚持
#include <iostream>
using namespace std;
#include<cstring>
//栈 - stack
#include<stack> //头文件
//队列 - queue
#include<queue>
//优先队列 - priority_queue
#include<concurrent_priority_queue.h>
void test01()
{
//定义
stack<int> s;
//放入
s.push(78); //放入数字78
s.push(89);
cout << "栈的长度为:" << s.size() << endl;
//返回栈顶的值
cout << "栈顶的值为 " << s.top() << endl;
//删除
s.pop(); //删除栈顶的数据
//返回长度
cout << "栈的长度为:" << s.size() << endl;
s.empty(); //清空
}
//测试
void test01A()
{
int n;
char ch = '1';
cin >> n;
getchar(); //获取数据放入缓存区
while (n--) //将n 个字符放入栈中
{
stack<char> s;
while (true)
{
ch = getchar(); //一次读一个字符(从缓冲区中)
if (ch == ' ' || ch == '\n' || ch == EOF) //结尾输出全部
{
while (!s.empty()) //当栈不为空
{
printf("%c", s.top());
s.pop(); //输出一次便删除
}
if (ch == '\n' || ch == EOF)
break;
}
else
s.push(ch); //放入栈中
printf(" ");
}
}
}
//队列(queue) - 先进先出
void test02()
{
//定义
queue<int> q;
//放入
q.push(78); //放入数字78
q.push(89);
cout << "队列的长度为:" << q.size() << endl;
//返回队列顶的值
cout << "队列顶的值为 " << q.front() << endl;
//返回队列尾的值
cout << "队列尾的值为 " << q.back() << endl;
//删除
q.pop(); //删除队列顶的数据
//返回长度
cout << "队列的长度为:" << q.size() << endl;
q.empty(); //清空
}
//优先队列(priority_queue)push和pop都会调整
void test03()
{
priority_queue<int> p;
p.push(45);
p.push(467);
p.push(67);
//该队列没有 front()函数
for (int i = 0; i < p.size(); i++)
//p.size()返回的元素个数少一个
{
cout << p.top() << " ";
p.pop();
}
cout << "长度为:" << p.size() << endl; //长度为 元素个数减一
}
int main()
{
/*test01();*/
//test01A();
test03();
return 0;
}