【摘录】STL的3种容器适配器

摘录自《标准C++》

STL提供了3种容器适配器,它们分别是栈(stack),队列(queue),优先级队列(priority_queue)

  • 栈(先进后出,后进先出)

使用栈必须包含头文件<stack>,模板参数为

template<class T,class Container=deque<t> >       两个”>”之间需要一个空格,否则”C++”会把它当做操作符”>>”处理

创建栈时,可以指定其容器类型为vector,list或deque,若不指定,则默认为deque

stack<int,vector<int> > sv;

stack<int> sv;   //默认采用deque为其容器

stack的操作主要有

  •     push(x)  将元素压入栈
  •     pop()   弹出栈顶元素(无返回值)
  •     top() 获取栈顶元素(不弹出)
  •     empty()  栈为空则返回1,不为空返回0
  •     size() 返回栈中元素的个数
  • 队列(先进先出,后今后出)

使用队列必须包含头文件<queue>,模板参数为

template<class T,class Container=deque<t> >

创建队列时,可以指定其容器类型为list和deque,若不指定,则默认为deque

queue<int,vector<int> > qv;

queue的操作主要有

  • push(x)  将元素压入队列
  • pop()   弹出首部元素
  • front()   获取首部元素
  • back()  获取尾部元素
  • empty()  队列为空则返回1,不为空返回0
  • size() 返回队列中元素的个数
  • 优先级队列

按照一定的优先排序了的队列,优先级队列总是将优先级高的元素排在优先级低的元素上面

使用优先级队列必须包含头文件<queue>,模板参数为

template<class T,class Container-vector<T>,

             class Comparator=less<class Container::value_type> >

使用优先级队列时可以指定其使用的容器类型和用以比较元素大小的函数对象类(可参考STL函数对象

默认情况下,priority_queue采用vector作为实现容器,并将元素按照从大到小降序排列

priority_queue<int> pq;

priority_queue的操作主要有

  •     push(x)  将元素压入队列
  •     pop()   弹出首部元素(无返回值)
  •     top()   获取首部元素(不弹出)
  •     empty()  队列为空则返回1,不为空返回0
  •     size() 返回队列中元素的个数
  • posted @ 2009-11-17 16:53  leukotrichia  阅读(1523)  评论(2编辑  收藏  举报