deque queue and priority_queue
deque queue and priority_queue
stl-deque
deque 是双端队列,可实现栈与队列的操作。
deque支持deque_ob[i] 形式的随机存取。
stl-queue
queue的基本操作有:
入队,如例:q.push(x); 将x 接到队列的末端。
出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
访问队首元素,如例:q.front(),即最早被压入队列的元素。
访问队尾元素,如例:q.back(),即最后被压入队列的元素。
判断队列空,如例:q.empty(),当队列空时,返回true。
查询当前容量,如例:q.size();
不支持[i]下标随机访问和clear()函数。
stl-priority_queue
普通的队列是一种先进先出的数据结构,元素在队尾进队而从队头出队。在优先队列中,元素被赋予优先级,最大(或最小)的元素在队头。
对于自定义的结构体,重载'<'(小于号)就会保证队头元素当前最大,即降序排序。这与sort刚好相反。
头文件为<queue>。此类没有clear()成员函数,只能逐个pop()。
常用的操作如下:
empty() 如果优先队列为空,则返回真
pop() 删除第一个元素
push() 加入一个元素
size() 返回优先队列中拥有的元素的个数
top() 返回优先队列中有最高优先级的元素
#include<iostream>
#include<queue>
using namespace std;
int main(){
priority_queue<int ,vector<int>,greater<int>> q;
q.push(3);q.push(1);q.push(2);
for(;!q.empty();q.pop()) cout<<q.top();
cout<<endl;
{
priority_queue<int ,vector<int>> q;
q.push(3);q.push(1);q.push(2);
for(;!q.empty();q.pop()) cout<<q.top();
}//此对括号作用域内的q不会与上面的q冲突
return 0;
}
/*下面是priority_queue的定义
template<typename _Tp, typename _Sequence = vector<_Tp>,
typename _Compare = less<typename _Sequence::value_type> >
class priority_queue{};
*/
/*123
321
Process returned 0 (0x0) execution time : 0.124 s
Press any key to continue.
*/
最后更新:2017-04-03 12:56:01
上一篇:
stl-vector
下一篇:
查找与散列(Hash)
使用Java调用Oracle数据库的存储过程实例
战胜柯洁后,AI在悄悄潜入人类下一个智慧堡垒
Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom
spring-boot+spring-session集成
阿里云大学安全课程-阿里云首席安全研究员吴瀚清:WannaCry事件最“细思恐极“的一个事实是?
【 Release Notes】CodePipeline 产品更新
Java面向对象高级--final关键字
Apache下实现禁止目录浏览
Wi-Fi曝安全漏洞 面临KRACK攻击风险
Spring Cloud 接入 EDAS 之服务发现篇