zoukankan      html  css  js  c++  java
  • deque


    deque,全名double-ended queue  是一种具有队列和栈的性质的数据结构。
    双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。
    双端队列是限定插入和删除操作在表的两端进行的线性表。这两端分别称做端点1和端点2。
    也可像栈一样,可以用一个铁道转轨网络来比喻双端队列。
    在实际使用中,还可以有输出受限的双端队列(即一个端点允许插入和删除,另一个端点只允许插入的双端队列)
    和输入受限的双端队列(即一个端点允许插入和删除,另一个端点只允许删除的双端队列)。
    而如果限定双端队列从某个端点插入的元素只能从该端点删除,则该双端队列就蜕变为两个栈底相邻的栈了。
    尽管双端队列看起来似乎比栈和队列更灵活,但实际上在应用程序中远不及栈和队列有用。

    deque 的调用(也可以手写)来自:https://www.cnblogs.com/liubilan/p/9461141.html

     1 deque - 双向队列
     2 1.构造
     3 无参构造:
     4 deque<int> a;  //<>内自定义数据类型;
     5 带参构造:
     6 deque(beg,end); //构造函数将[beg, end)区间中的元素拷贝给本身。注意该区间是左闭右开的区间。
     7 deque(n,elem); //构造函数将n个elem拷贝给本身。
     8 deque(const deque &deq); //拷贝构造函数。
     9 2.头部&尾部的添加和删除
    10 deque.push_back(elem); //在容器尾部添加一个数据
    11 deque.push_front(elem); //在容器头部插入一个数据
    12 deque.pop_back(); //删除容器最后一个数据
    13 deque.pop_front(); //删除容器第一个数据
    14 3.中间数据存取
    15 deque.at(idx); //返回索引idx所指的数据,如果idx越界,抛出out_of_range。
    16 deque[idx]; //返回索引idx所指的数据,如果idx越界,不抛出异常,直接出错。
    17 deque.front(); //返回第一个数据。
    18 deque.back(); //返回最后一个数据
    19 4.元素插入
    20 deque.insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置。
    21 deque.insert(pos,n,elem); //在pos位置插入n个elem数据,无返回值。
    22 deque.insert(pos,beg,end); //在pos位置插入[beg,end)区间的数据,无返回值。
    23 5.数据删除
    24 deque.clear(); //移除容器的所有数据
    25 deque.erase(beg,end); //删除[beg,end)区间的数据,返回下一个数据的位置。
    26 deque.erase(pos); //删除pos位置的数据,返回下一个数据的位置。
    27 6.迭代指针
    28 deque.begin(); //返回容器中第一个元素的迭代器。
    29 deque.end(); //返回容器中最后一个元素之后的迭代器。
    30 deque.rbegin(); //返回容器中倒数第一个元素的迭代器。
    31 deque.rend(); //返回容器中倒数最后一个元素之后的迭代器。
    32 7.赋值&拷贝
    33 deque.assign(beg,end); //将[beg, end)区间中的数据拷贝赋值给本身。注意该区间是左闭右开的区间。
    34 deque.assign(n,elem); //将n个elem拷贝赋值给本身。
    35 deque& operator=(const deque &deq); //重载等号操作符 
    36 deque.swap(deq); // 将vec与本身的元素互换
    37 8.大小&判断非空
    38 deque.size(); //返回容器中元素的个数
    39 deque.empty(); //判断容器是否为空
    40 deque.resize(num); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。
    41 deque.resize(num, elem); //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。
  • 相关阅读:
    【分享】HTML5附件拖拽上传drop & google.gears
    【分享】return false,对阻止事件默认动作的一些测试
    【记录】随笔分类汇总
    【分享】微博 @ 符号的用户名提示效果。(想@到谁?)
    【记录】File, FileReader 和 Ajax 文件上传
    【动态】简单的JS动态加载单体
    【分享】简单页面提示插件第二版表单验证很简单
    【记录】GIT 常用命令
    【分享】jQuery animate自定义动画的简单实现
    【分享】 封装js操作textarea 方法集合(兼容很好)。
  • 原文地址:https://www.cnblogs.com/adelalove/p/11767193.html
Copyright © 2011-2022 走看看