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. 又见GCD (HDU 2504)

    这个题真的很水,但我竟然连错,在此警醒自己!!! 写代码改了东边,忘了西边,“认真”这两个字又被我吃了,打脸啪啪啪啪. #include<iostream> using namespace ...

  2. 如何使用ROS查找rgbdslam代码包框架的输入

    我想这是一个天大的错误,在没有对整个ROS下的代码有一个整体理性的认知时,我使用感性认知. 由于在跑他的测试代码时,只替换了两个节点的名称,相当于remap了它,以为就可以跑了,结果是不行的. 然后用 ...

  3. hdu3887 Counting Offspring

    Counting Offspring HDU - 3887 问你对于每个节点,它的子树上标号比它小的点有多少个 /* 子树的问题,dfs序可以很轻松的解决,因为点在它的子树上,所以在线段树中,必定在它 ...

  4. App裂变活动多种玩法解析

    移动互联网时代,流量为王.在App获取流量的过程中,有资金的砸广告,没资金的铺渠道,但是不管你有钱没钱,社交平台都是必须重点争夺的流量阵地. 毕竟,截至2018年底,微信及WeChat的合并月活跃账户 ...

  5. ios 支付宝支付集成

    支付宝支付: 下载官方demo,把需要的framwork下载下来,在自己的工程中,新建文件夹,然后全部塞进去,到build phases中把需要的全部导入,其中xcode7以上需要多导入两个.a文件, ...

  6. linux笔记之基础 1

    内核命名规则: R.X.Y-Z   2.6.32-642 R: 内核有重大改变时才会更改,目前为止有四个大版本更新. X:基数为开发版,偶数为稳定版. Y.Z:修复bug,实现新功能,新特性的时候更改 ...

  7. 打造H5动感影集的爱恨情仇–动画性能篇

    “你听说过动感影集么?” 动感影集是QQ空间新功能,可以将静态的图片轻松转变为动态的视频集,且载体是HTML5(简称H5)页面,意味着可以随时分享到空间或朋友圈给好友欣赏! 移动端区别于PC年代的相册 ...

  8. CSS之flex兼容

    我觉得写的很好的文章,但是我又没有时间去整理的. https://blog.csdn.net/u010130282/article/details/52627661 百分比 是在宽度自适应的时候要用 ...

  9. Babelfish (关于map<string,string>的用法

    题目链接:https://vjudge.net/contest/237395#problem/A 学习博客:https://blog.csdn.net/lyy289065406/article/det ...

  10. centos 6 设置无密码登录ssh 不成功问题

    由于需要配置一台git 服务器,所以当时就建立了个git 帐号,之后执行mkdir .ssh   之后在客户端  scp 了自己的pub公钥到.ssh 目录下,但是怎么都还是需要自己再次输入密码,将这 ...