deque是双向队列,即可以在头部插入删除,也可以在尾部插入删除。内部并不连续,这一点和vector并不一样。可能第1个元素和第2个元素的地址是不连在一起的。在使用时用it迭代器会安全一点。

这是c++ 98标准的,不是c++11的。11标准新加的函数没在这里说明。里面大部分函数是经过测试的才得出的结论。

函数(下面将iterator简化为it)

描述

Void c.assign(it beg,it end)
void c.assign(it n,元素类型  elem)

将拷贝[beg; end)区间中的数据用覆盖式地赋值给c。第2个参数是不包含元素的。
将n个elem的赋值给c。

这两个函数均会将原来的容器清空再赋值。Iterator是c相同的容器类型。

it c.at(int idx)

传回索引idx所指的数据,idx从0开始,如果idx越界,抛出out_of_range。

reference c.back()

传回最后一个数据,不检查这个数据是否存在。只传不删。注意返回值与begin不同。

it c.begin()

传回迭代器中的第一个数据地址。返回的是第1个数据的地址,即iterator型。

Void c.clear()

移除容器中所有数据,被清空了,再访问里面的数据会出错。

Void c.empty()

判断容器是否为空。返回值为bool型。若空则返true,若非空返false。

it c.end()

指向迭代器中的最后一个数据的下一个数据的地址,该地址是没有元素的,与begin搭配的。若容器为空,返回与begin同样地址。

It c.erase(it pos)
it c.erase(it beg,it end)

删除pos位置的数据,传回下一个数据的位置。
删除[beg,end)区间的数据,传回下一个数据的位置。第2个参数是最后一个元素的首地址,即该地址是有元素的。

Reference c.front()

传回容器中第一个数据,不检查这个数据是否存在。只传不删。

c.get_allocator()

使用构造函数返回一个拷贝。//此函数暂不知道怎么用,windows下不太一样。原型allocator_type get_allocator() const;

It c.insert(it pos,元素类型 elem) 
void c.insert(it pos,int n,元素类型 elem)
void c.insert(it pos,it beg,it end)

在pos位置插入一个elem元素拷贝,传回新数据位置。逻辑上pos处的元素就往后移了。
在pos位置插入n个elem元素。
在pos位置插入在[beg,end)区间的数据,这些数据也是属于容器中的。end没有实际元素。

Int c.max_size()

返回容器中可容纳多少个元素。不同类型的deque,可容纳数量不同。

Void c.pop_back()

删除最后一个数据。

Void c.pop_front()

删除头部数据。

Void c.push_back(元素类型 elem)

在尾部加入一个数据。

Void c.push_front(元素类型 elem)

在头部插入一个数据。

It c.rbegin()

传回一个逆向队列的第一个数据的地址。使用这两个可以逆向输出。

It c.rend()

传回一个逆向队列的最后一个数据的下一个位置的地址。

Void c.resize(int num,可选的默认值)

重新指定队列的元素数量为num个。2种情况:1.若num比存在的元素个数要少,则删除尾部的元素以调整个数。2.若num比实际存在的元素要多,则在实际元素之后填充默认值以调整个数。(第2个元素为可选,若没有则默认为该类型的默认值)

Int c.size()

返回容器中目前存放了多少个元素。(这个和max_size不同)

Void c1.swap(deuqe c2) 
void swap(deque c1,deque c2)

将c1和c2中的元素互换,c1和c2都是同一类型的deque。
作用同上,这个可以直接用。

deque<Elem> c
deque<Elem> c1(deque c2)
Deque<Elem> c(int n)
Deque<Elem> c(int n, 类型 elem)
Deque<Elem> c(it beg,it end)
c.~deque<Elem>()

创建一个空的deque。Elem可以为int、char等等很多种类型。
以c2初始化为c1,相当于复制出一个队列副本。
创建一个deque,含有n个数据,数据均由缺省值在创建时初始化。
创建一个含有n个elem拷贝的deque。
创建一个以[beg;end)区间的deque。
销毁所有数据,释放内存,但是c还可以继续使用,只不过包含的元素个数为0。

c++ STL deque容器成员函数的更多相关文章

  1. c++ STL stack容器成员函数

    这是后进先出的栈,成员函数比较简单,因为只能操作栈顶的元素.不提供清除什么的函数. 函数 描述 bool s.empty() 栈是否为空(即size=0).若空,返回true,否则,false. vo ...

  2. c++ STL map容器成员函数

    map容器用于查找,设置键值和元素值,输入键值,就能得到元素值.map对象中的元素时刻都是有序的,除非无序插入的.它是用平衡树创建的.查找很快. 函数 描述,注意有r的地方都是不能用it代替的. ma ...

  3. c++ STL list容器成员函数

    list是一个双链表. 函数 描述 void l.assign (int n, const val) void l.assign (it first, it last) 将链表l初始化为n个相同的va ...

  4. STL Deque 容器

    STL Deque 容器 Deque简介 deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双 端的,而vector是单端的.         ...

  5. 浅谈C++ STL deque 容器

    浅谈C++ STL deque 容器 本篇随笔简单介绍一下\(C++STL\)中\(deque\)容器的使用方法及常见使用技巧. deque容器的概念 \(deque\)的意义是:双端队列.队列是我们 ...

  6. C++STL(vector,map,set,list,bitset,deque)成员函数整理

    补充: vector 删除指定元素: vec.erase(remove(vec.begin(), vec.end(), val),           vec.end());remove()返回的是删 ...

  7. 2.4 C++STL deque容器详解

    文章目录 2.4.1 引入 2.4.2 代码示例 2.4.3 代码运行结果 2.4.4 具体案例 总结 2.4.1 引入 deque容器类比vector容器来学习. deque为双向开口容器,见下图. ...

  8. STL容器 成员函数 时间复杂度表

    Sequence containers Associative containers   Headers <vector> <deque> <list> <s ...

  9. C++——STL之vector, list, deque容器对比与常用函数

    STL 三种顺序容器的特性对比: vector 可变数组,内存空间是连续的,容量不会进行缩减.支持高效随机存取,即支持[]和at()操作.尾部插入删除效率高,其他位置插删效率较低: list 双向链表 ...

随机推荐

  1. Improved RGB-D-T based Face Recognition 论文笔记

    本文将基于深度学习的卷积神经网络(CNN)应用于基于RGB-D-T的多模态人脸识别问题. 此外,引入了基于CNN的识别模块与各种纹理特征(LBP,HOG,HAAR,HOGOM)的后期融合,在基准RGB ...

  2. DataSet,DataTable,DataColumn,DataRow的常用操作

    DataSet 这个玩意没什么好讲的,当ado.net查询出有多张表集合的数据返回时,这个时候就会使用到DataSet. DataTable //表之间直接赋值 dt2=dt1; 两者指向同一内存空间 ...

  3. C# 字符串转JSON

    一.简单小结 C# 中 String 转 JSON var items = JsonConvert.DeserializeObject<class>(stringJSON); 这里的 cl ...

  4. VIM命令图---可定制版

    近期闲来无事,便自己用PS制作了一份VIM命令助记图,之前看到网上有类似的图片,可是有些解释感觉不太好,并有一些错误的地方,所以就自己做了一份,并且保留了PS源文件,为了方便会PS的网友可以对本图进行 ...

  5. linux系统elementray os的环境搭建

    因为我在使用过程中为了改变终端的外表,结果把/ect/psswd,以及/ect/profile中的文件配置修改之后,我把gnome-terminal的python脚本打包放在/bin/目录下,修改了/ ...

  6. 洛谷P1057 传球游戏(记忆化搜索)

    点我进入题目 题目大意:n个小孩围一圈传球,每个人可以给左边的人或右边的人传球,1号小孩开始,一共传m次,请问有多少种可能的路径使球回到1号小孩. 输入输出:输入n,m,输出路径的数量. 数据范围:4 ...

  7. 牛客 PUBG

    题目链接:点击打开链接 题目大意:跑毒,跑到安全区,每个地方有敌人,输出路线经过的最少敌人的数量:-1是起点. -2是安全区 输入 5 6 6 0 -2 3 4 2 1 2 1 2 2 8 9 7 8 ...

  8. Unity 行为树-节点间数据传递

    一.引言 有以下小场景: 节点A:发现了 敌人. 节点B:追逐敌人. 对于同一个敌人物体,节点AB之间是如何传递数据 的呢? 二.数据传递的3种方式 1.共享变量:面板中创建局部或者全局的共享变量Te ...

  9. spark shell start

    spark-shell \--master yarn \--deploy-mode client \--queue default \--driver-memory 1G \--executor-me ...

  10. svn地址迁移

    关于svn设置如下: 1. 点击如果所示[Relocate]: 2. 会弹出两个框:一个让你输入用户名密码:一个是svn地址: 3. 先把svn地址改一下,然后输入用户名密码,点确定.就ok啦!