概述
一种先进先出的数据结构。
queue
有两个出口,允许从最底端加入元素,取得最顶端元素。除了这种最底端加入,最顶端可以取出元素的方式外,没有任何其他方法可以存取
queue
的其他元素。
- 最底端加入
push
- 最顶端推出
pop
实现
缺省实现
SGI STL
以双端队列作为缺省情况下的queue
底部结构。
queue
以它的底部容器完成所有工作,因此,SGI STL
把其称为配接器,归类为配接器容器。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
template<class T,class Sequeue = deque<T> > class queue { friend bool operator== __STL_NULL_TMPL_ARGS (const queue& x,const queue& y); friend bool operator< __STL_NULL_TMPL_ARGS (const queue& x,const queue& y); public: typedef typename Sequeue::value_type value_type; typedef typename Sequeue::size_type size_type; typedef typename Sequeue::reference reference; typedef typename Sequeue::const_reference const_reference; protected: Sequeue c;//底层容器 public: bool empty() {return c.empty();} size_type size() const {return c.size();} reference front() { return c.front();} const_reference front() const {return c.front();} reference back() {return c.back();} const_reference back() const {return c.back();} // void push(const value_type& x) {c.push_back(x);} void pop() {c.pop_front();} template <class T,class Sequeue> bool operator==(const queue<T,Sequence>& x,const queue<T,Sequence>& y) { return x.c == y.c; } template <class T,class Sequence> bool operator<<(const queue<T,Sequence>& x,const queue<T,Sequence>& y) { return x.c < y.c; }d }; |
链表实现
链表也是双向开口的数据结构,上述代码中使用的底层容器的函数,list都具备
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include <queue> #include <list> #include <iostream> #include <algorithm> using namespace std; int main() { queue<int,list<int>> iqueue; iqueue.push(1); iqueue.push(3); iqueue.push(5); iqueue.push(7); cout << iqueue.size() << endl; cout << iqueue.front() << endl; iqueue.pop(); cout << iqueue.front() << endl; iqueue.pop(); cout << iqueue.front() << endl; cout << iqueue.size() << endl; } |
本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 深度探索C++对象模型一02/09
- ♥ C++并发编程 _ 基于锁的数据结构08/19
- ♥ COM组件_207/22
- ♥ 文件md5值计算05/31
- ♥ C++编程规范101规则、准则与最佳实践 二01/07
- ♥ C++14_第二篇06/21