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。

转载于:https://www.cnblogs.com/xcw0754/p/4263488.html

c++ STL deque容器成员函数相关推荐

  1. 深入研究 C++中的 STL Deque 容器

    本文档深入分析了std::deque,并提供了一个指导思想:当考虑到内存分配和执行性能的时候,使用std::deque要比std::vector好. 介绍 本文深入地研究了std::deque 容器. ...

  2. C++ STL deque 容器底层实现原理(深度剖析)

    事实上,STL 中每个容器的特性,和它底层的实现机制密切相关,deque 自然也不例外.<C++ STL deque容器>一节中提到,deque 容器擅长在序列的头部和尾部添加或删除元素. ...

  3. C++ 常用容器成员函数用法总结

    C++ 常用容器成员函数用法总结 C++ 常用容器成员函数用法总结 简介 迭代器 简介 array: 静态数组 简介 构造函数 访问 / 赋值 迭代器 下标 / at 批量赋值 swap (交换函数) ...

  4. STL Deque 容器

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

  5. C++ STL deque容器添加和删除元素方法完全攻略

    deque 容器中,无论是添加元素还是删除元素,都只能借助 deque 模板类提供的成员函数.表 1 中罗列的是所有和添加或删除容器内元素相关的 deque 模板类中的成员函数. 表 1 和添加或删除 ...

  6. STL( deque容器 )

    3.3 deque容器 3.3.1 deque容器基本概念 Vector容器是单向开口的连续内存空间,deque则是一种双向开口的连续线性空间.所谓的双向开口,意思是可以在头尾两端分别做元素的插入和删 ...

  7. STL各容器成员对比表

    来源:http://www.cplusplus.com 一转:http://www.cnblogs.com/fangyukuan/archive/2010/09/21/1832675.html 标准S ...

  8. [C++STL]deque容器用法介绍

    代码如下: #include <iostream> #include <string> #include <deque> using namespace std;v ...

  9. C++ STL list的成员函数splice的使用

    #include <iostream> #include <list> #include <algorithm> //使用函数for_each using name ...

最新文章

  1. k-means优化 k-means距离的选择 k-medoids对比
  2. python dict根据value找对应的key_一个不得不了解的Python库——collections
  3. 全球最权威人脸识别测试,中国团队依图科技夺得第一
  4. python3.7代码转python2.7_Python3.7与Python2.7在centos7下兼容并存
  5. linux查看帮助信息,命令帮助信息的获取
  6. 网页中使用的特殊字体(webdings, wingdings 2)
  7. hercules z/OS 安装 RPG 编译器
  8. clion连接mysql,使用 CLion 调试 mysql 源码
  9. 2021年6月程序员薪资出炉,平均薪资15302元
  10. 内蒙古煤炭经济杂志社内蒙古煤炭经济编辑部2022年第14期目录
  11. localhost无法访问的问题
  12. 基于COMS技术,COMS工艺等,CMOS到底是个啥?
  13. Ubuntu 16.04 源码编译安装 uhd gnuradio
  14. 人工智能的核心技术是什么?
  15. 机房迁移测试时需要注意事项
  16. Map中可以作为Key的类型
  17. goroutine和GPM调度
  18. Java Dependence Analysis(Java静态依赖分析)
  19. 新西兰 working holiday visa
  20. 水经注有哪些单款地图下载器授权?

热门文章

  1. CodeSmith实用技巧(八):生成的代码输出到文件中
  2. 【前端面试】HTML5+CSS3初级面试1
  3. spring官方网站
  4. egg --- 初始化一个egg项目基本结构说明
  5. vue --- ref属性获取dom元素和子组件的方法
  6. javascript --- 数组实用小技巧
  7. ES5-拓展 this指向的总结
  8. [动态代理三部曲:下] - 从动态代理,看Retrofit的源码实现
  9. zabbix自动发现监控磁盘(iops和读写量)
  10. 如何先执行input (checkbox,radio)再执行函数