STL--容器stack、queue、priority_queue
STL--容器stack、queue、priority_queue
一、栈(stack)
使用前要添加头文件#include <stack>
1.构造:
stack<T> stk; //T为数据类型,这里为一个模板类型
2.赋值操作:
stack<T>stk(s); //用s赋值给stk
3.数据存取:
stk.push(elem); //将elem 压入栈stk中
stk.pop(); //栈顶元素出栈
stk.top(); // 整体代表栈顶元素的值
4.大小操作:
stk.empty(); //判断是否为空,返回true or false
stk.size(); //整体值为栈中元素的个数
5.清空操作:
stack<T> empty;
swap(empty, stk);
//
1、相当于交换了stk与一个空临时stack再结束,在堆空间本质还是一个一个删除
还有一种循环pop判空法,但是前者更快
再或者运算符重载赋值空栈给stk。
二、队列(queue)
构造:
queue<T>q;
赋值:
queue<T>q1(q);
数据存取:
q.pop() //删除队首元素但不返回其值
q.front() //整体值为队头元素的值
q.push(data) //将data压入队尾
q.back() //返回队列尾部元素的值但不删除
大小操作:
q.empty() //是否为空
q.size() //元素个数
清空:
queue<int> empty;
swap(empty, q); //同上
三、优先队列(priority_queue) //它与queue都在头文件<queue>
优先队列即是有优先级的队列,它是一颗完全二叉树
- top 访问队头元素
- empty 队列是否为空
- size 返回队列内元素个数
- push 插入元素到队尾 (并排序)
- emplace 原地构造一个元素并插入队列
- pop 弹出队头元素
- swap 交换内容
//对于基础类型 默认是大顶堆
priority_queue<int> a;
//等同于 priority_queue<int, vector<int>, less<int> > a;
priority_queue<int, vector<int>, greater<int> > c; //这样就是小顶堆
priority_queue<string> b;
for (int i = 0; i < 5; i++)
{
a.push(i);
c.push(i);
}
while (!a.empty()) //把a队列以出队顺序输出元素
{
cout << a.top() << ' ';
a.pop();
}
cout << endl;
while (!c.empty()) //把ac队列以出队顺序输出元素
{
cout << c.top() << ' ';
c.pop();
}
cout << endl;
b.push("abc");
b.push("abcd");
b.push("cbd");
while (!b.empty())
{
cout << b.top() << ' ';
b.pop();
}
cout << endl;
return 0;
输出结果如下:
4 3 2 1 0
0 1 2 3 4
cbd abcd abc
本文来自博客园,作者:FrankPlus,转载请注明原文链接:https://www.cnblogs.com/yztbky/p/16065410.html