STL容器之queue和priority_queue
STL的顺序容器还有最后两种,这两种都是适配器,分别是queue和priority_queue,这两种容器用法基本相同,所以就放在一块说了。他俩的构造函数形式与stack完全一样,而且都包含在queue头文件中。
他们提供的操作如下:
queue:
back() 返回最后一个元素
empty() 如果队列空则返回真
front() 返回第一个元素
pop() 删除第一个元素
push() 在末尾加入一个元素
size() 返回队列中元素的个数
priority_queue:
empty() 如果优先队列为空,则返回真
pop() 删除第一个元素
push() 加入一个元素
size() 返回优先队列中拥有的元素的个数
top() 返回优先队列中有最高优先级的元素
从上面可以看出,两种容器的操作非常相似,只是queue特有front()和back(),priority_queue特有top(),仅此而已。
对元素的操作也很简单,一目了然,贴段代码看一下吧:
#include <iostream> #include <list> #include <queue> #include <string> using namespace std; void show(list<int>& l) { cout << "list: "; for(list<int>::iterator it = l.begin(); it != l.end(); ++it) cout << *it << ' '; cout << endl; } void show(queue<int, list<int> > q) { cout << "queue: "; while(!q.empty()){ cout << q.front() << ' '; q.pop(); } cout << endl; } int main() { list<int> int_lst; int_lst.push_back(1); int_lst.push_back(2); int_lst.push_back(3); int_lst.push_front(0); //show list show(int_lst); queue<int, list<int> > int_que(int_lst); //push cout << "push 4 into queue" << endl; int_que.push(4); show(int_que); //front and back element cout << "front: " << int_que.front() << endl; cout << "back: " << int_que.back() << endl; //pop cout << "pop element" << endl; int_que.pop(); show(int_que); //size cout << "size of queue: " << int_que.size() << endl; return 0; }
运行结果如下图: