zoukankan      html  css  js  c++  java
  • STL总结之queue, priority_queue, stack

    之所以把这三个容器放在一起,是因为他们都是容器适配器.
     
    STL中queue就是我们常用的FIFO队列,实现是一个容器适配器,这种数据结构在网络中经常使用.
     
    queue的模板声明:
    template < class T, class Container = deque< T> > class queue;
    这里第二个参数不再是一个内存分配器,而是一个容器,也就是这里我们可以传递一个deque<T>, list<T>, vector<T>等容器,只要这个容器支持queue中调用的借口.因此queue只负责统一调用接口.
    queue的成员函数很简单,成员函数也只是对我们设置的容器进行调用,因此不多列举.
     
    STL中priority_queue也是一个容器适配器,故名思意它是一个带优先级的队列.
     
    priority_queue模板声明如下:
    template class Tclass Container vector< T >,
    class Compare less< typename Container :: value_type> > class priority_queue ;
    适配的容器我们可以自己设置,而比较规则也可以自定义,默认适配容器时vector, 用<进行比较.
     
     
    priority_queue内部建立了一个堆, 默认是大堆, 我们进行push, pop操作实际上就是对堆得插入和删除,而top操作访问的是堆顶元素.
    这里不对堆进行展开说明,在STL算法时再展开.
     
    STL中stack是LIFO(后进先出)队列,我们经常使用的内存栈,实现迷宫,汉诺塔时用的就是这种数据结构.
     
    stack模板声明如下:
    template < class T, class Container = deque< T> > class stack;
    我们可以使用list,vector,deque进行适配,默认是deque.
    栈的操作每次只能操作栈顶元素,也就是最后一个入栈的元素.
    push向栈顶压入元素, pop弹出栈顶元素,top访问栈顶元素.
  • 相关阅读:
    【持续更新】养成一些好的C++编程习惯,争做一个不让同事骂街的程序员
    Inno Setup界面美化
    QWebengineView页面不实时刷新的问题
    Qt封装窗口进dll须知
    Inno Setup打包工具
    【转载】排序方式整理(带演示GIF)
    MySQL遇见SELECT list is not in GROUP BY clause and contains nonaggre的问题
    JMeter测试TCP协议
    Win10微软拼音关闭Ctrl+Shift+B快捷键
    Hive 窗口函数使用(1)
  • 原文地址:https://www.cnblogs.com/ourroad/p/3356059.html
Copyright © 2011-2022 走看看