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. 【redis对象,集合序列化Demo】

    package org.seckill.dao.cache; import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStr ...

  2. GridView 高亮某一行

    <script type="text/javascript"> $(document).ready(function () { $("#GridView tr ...

  3. java websocket中的ping-pong 机制

    参考源码: https://github.com/TooTallNate/Java-WebSocket/blob/master/src/main/java/org/java_websocket/cli ...

  4. Codeforces Round #523 (Div. 2)C(DP,数学)

    #include<bits/stdc++.h>using namespace std;long long a[100007];long long dp[1000007];const int ...

  5. struts2学习笔记——第一个struts2应用配置

    说实在的,随着Java学习的不断深入,特别是Java web框架部分,调bug让人很心累,但是每征服一个bug,内心的成就感也是难以言说的.第一个struts2应用的配置,我昨天折腾了快2个小时,最后 ...

  6. 唯快不破:Web 应用的 13 个优化步骤

    时过境迁,Web 应用比以往任何时候都更具交互性.搞定性能可以帮助你极大地改善终端用户的体验.阅读以下的技巧并学以致用,看看哪些可以用来改善延迟,渲染时间以及整体性能吧! 更快的 Web 应用 优化 ...

  7. Technical support website

    Technical support:Please leave a message if you have any questions or suggestions. email: swvrwafet@ ...

  8. c语言中malloc函数的使用

    传送门:https://www.cnblogs.com/shiweihappy/p/4246372.html c语言中内存的管理:https://www.cnblogs.com/tuhooo/p/72 ...

  9. 牛客假日团队赛1 I.接机

    链接: https://ac.nowcoder.com/acm/contest/918/I 题意: 一场别开生面的牛吃草大会就要在Farmer John的农场举办了! 世界各地的奶牛将会到达当地的机场 ...

  10. fastJson Gson对比及java序列化问题

    一个案例 POJO没有set方法, 造成反序列化时出现NPE问题.实际场景:POJO是第三方提供的,final public class XJSONTest { public static void ...