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. */
时间: 2024-09-19 16:09:49