zoukankan      html  css  js  c++  java
  • deque双向队列

    对于双向队列,与队列queue以及vector容器的区别就在于,名字不同,也就是它是双向的,可以从头开始操作,也可以从末尾开始操作。

    双向队列的常用方法跟队列queue差不多:

    头文件: #include<deque>

    函数:

    构造/析构

      deque<int>q  构造一个空的双向队列

      deque<int>q(q1)  构造q,并复制q1

      deque<int>q(n)  创建deque,含有n个数据,数据均由缺省构造函数产生

      deque<int>q(beg,end)  创建一个以[beg,end)区间的deque

      q.~deque<int>()  销毁所有的数据,释放内存

    赋值

      q.assign(beg,end)  将[beg,end)区间中的数据赋值给q

      q.assign(n,int)  将n个int 的拷贝值给q

    数据访问

      q.at(idx)  返回索引 idx 所指的数据,如果 idx 越界,抛出 out_of_range

      q.fron()  返回第一个数据

      q.back()  返回最后一个数据

      q.begin() 返回指向第一个数据的迭代器

      q.end()  返回指向最后一个数据的下一个位置的迭代器

      q.rbegin() 返回逆向队列的第一个数据

      q.rend() 返回指向逆向队列的最后一个数据的下一个位置的迭代器

    加入数据

      q.push_back()  在尾部加入一个数据

      q.push_front()  在头部插入一个数据

      q.insert(pos,int) 在pos 位置插入一个 int 数据的拷贝 ,返回新数据位置

      q.insert(pos,n,int) 在pos 位置插入n 个 int 数据 ,无返回值

      q.insert(pos,beg,end) 在pos位置插入在 [beg,end)区间的数据,无返回值

    删除数据

      q.pop_back() 删除最后一个数据

      q.pop_front()  删除头部数据

      q.erase(pos) 删除pos位置的数据 ,返回下一个数据的位置

      q.erase(beg,end) 删除[begin,end) 区间的数据,返回下一个数据的位置

    其他操作

      q.empty()  判断容器是否为空

      q.max_size()   返回容器中最大数据的数量

      q.resize(num)  重新制定队列的长度

      q.size()  返回容器中实际数据的个数

      q.swap(q1)  将q和q1的元素互换

      swap(q,q1)  同上

        

      

  • 相关阅读:
    Vue项目端口号占用
    理解vuex -- vue的状态管理模式
    2018-7-10杂记
    JS 数组操作总结
    JS 字符串操作总结
    【javascript练习题】函数
    【javascript练习题】this指针和作用域
    canal实时同步mysql binlog到rabbitmq
    Hexo+GitHub+Netlify一站式搭建属于自己的博客网站
    Git学习原版手稿
  • 原文地址:https://www.cnblogs.com/ouyang_wsgwz/p/6818251.html
Copyright © 2011-2022 走看看