deque 类
题外: 'A' +1='B'
1、deque被称为双端队列,它也是一种顺序容器。可通过迭代器存取元素 ,也可以通过下标顺序 存取元素
for(i=0;i<d1.size();i++)
{
cout<<d1[i];
d1[i] = 0;
}
2、deque具有的性质
<1> 利用位置索引可以存取容器中的元素
<2> 可以通过任何顺序迭代容器中的元素
<3> 可以在容器的开始和末尾追加/删除元素
3、需要的命令
#include<deque>
using namespace std;
构造类函数
1、创建deque容器并初始化容器中的元素
<1>deque<int> d1;---------------------------------作用是构造一个空洞deque容器,该容器内容为空
<2>deque<int> d2(5,10);--------------------------作用是将10的值 重复5次 存放到容器中
<3>deque<int> d3(d2.begin(),d2.end());--------作用是将输入对象中迭代器first和last之间的元素存放到容器中
<4>deque<int> d4(d3);----------------------------作用是用另一个双端队列 初始化deque容器
2、析构函数 ~deque() 在程序结束时由系统自动调用
3、operator(运算符)= 函数 -----------赋值deque中的内容
例:d2 = d1; -------------------用d1中的元素替换掉 d2中的 元素
迭代器函数
1、deque容器 包含四个迭代器 begin end rbegin rend
2、注意:begin函数返回第一个元素的位置;end函数返回最后一个元素的后一个位置; rbegin函数返回第一个元素之前的位置;rend函数返回最后一个元素的位置
front函数 返回第一个元素 ;back函数返回最后一个元素
3、声明迭代器--------deque<数据类型>::iterator it;
用例:deque<char>::iterator it;
迭代器与迭代器函数配合使用-------用例:it=d1.begin()
容量类函数
1、size函数返回deque容器实际元素个数,max_size函数返回deque容器所能容纳的最大元素个数
2、empty函数的作用是判断deque容器是否为空,为空返回true,不为空返回false
3、resize函数的作用是重新调整deque容器的大小(改变deque容器的实际元素个数,而不是容器的存储空间大小),使其包含sz个元素
如果sz小于原来deque容器的大小,则第sz之后的元素被抛弃 --------------------d.resize(3)
如果sz大于原来deque容器的大小,这容器的大小扩展为sz个元素并在末尾追加元素c。如果省略了参数c,则插入的元素值为0--------------d.resize(8,50)---50是c
存取类函数-----operator[]函数、at函数和、front函数、back函数
1、operator[]函数----------------类似于数组下标的东西,但是不会进行越界检查(deque 第一个元素 的下标由0开始)
2、at函数------作用于operator[]函数类似 但是会自动越界检查 如果越界则抛出一个异常
用例:cout<<d.at(0);
3、 front 与 back 函数
操作类函数
1、assin函数---------作用是将元素赋值给当前的deque容器,覆盖之前存在的全部内容
<1> 利用迭代器 将[first,last)之前的元素赋值给当前的deque容器---------d2.assign(d1.begin()+2,d1.end()-1)
<2>将重复的n个元素值u赋值给当前的deque容器-------------------d2.assign(6,10)------6个10
2、push_back函数的作用是在deque容器的最后一个元素之后添加元素x,容器个数加一-----------------d.push_back(x);
3、push_front函数的作用是在deque容器的第一个元素之前添加元素x,容器个数加一-----------------d.push_front(x);、
4、pop_back函数的作用是移除deque容器中的最后一个元素,容器个数减一--------------------------d.pop_back(x);
5、pop_front函数的作用是移除deque容器中的第一个元素,容器个数减一--------------------------d.pop_front(x);
6、insert函数的作用是在deque 的指定位置插入元素x------------------------------双端队列的insert可以在任意位置插入元素,最前面最后面都行(push)
指定位置(即position的位置) 通常是通过迭代器来实现的
<1>第一个函数的作用是将x插入到deque容器中第position个元素之前-----------------返回新插入元素的迭代器-----it= d.insert(it,10)
<2>第二个函数的作用是将n个x插入到deque容器中第position个元素之前------------------------无返回值---------- d.insert(it,2,20)----2个20
<3>第三个函数的作用是将输入对象中的[first,last)之间的元素插入到第position个元素之前------------无返回值-----d.insert(it,d1.begin(),d1.end()-1);
7、erase函数-----------删除deque中的指定的元素-----------容器自动往前移动
指定位置(即position的位置) 通常是通过迭代器来实现的
<1>第一个函数的作用是删除deque容器中的第position个元素
<2>第二个函数的作用是撒谎拿出deque容器中的[first,last)之间的元素
函数返回 deque容器中最后被删除元素的后一个位置
8、clear函数----------清除deque中的所有元素------调用后容器内元素个数为0
用法: d.clear();
9、swap函数------------交换两个deque容器中的内容
用例:d1.swap(d2);
deque 类的更多相关文章
- python中deque类详解
最近在pythonTip做题的时候,遇到了deque类,以前对其不太了解,现在特此总结一下 deque类是python标准库collections模块中的一项,它提供了两端都可以操作的序列,这意味着, ...
- deque用法 和与vector的区别
deque是双向开口的连续性存储空间.虽说是连续性存储空间,但这种连续性只是表面上的,实际上它的内存是动态分配的,它在堆上分配了一块一块的动态储存区,每一块动态存储去本身是连续的,deque自身的机制 ...
- STL中deque
以下学习一下STL中另一种序列容器——deque. deque表示double-ended queue,即双向队列,deque是通过作为动态数组的方式实现的,这样可以在两端插入元素.因此,deque可 ...
- C++ 头文件系列(deque)
简介 deque是double ended queue(即双端队列)的简称. 就像C++中的大部分容器的一样,deque具有以下属性: 顺序的(sequence) 动态增长的(dynamic grow ...
- STL:deque用法详解
deque函数: deque容器为一个给定类型的元素进行线性处理,像向量一样,它能够快速地随机访问任一个元素,并且能够高效地插入和删除容器的尾部元素.但它又与vector不同,deque支持高效插入和 ...
- Deque(队列)
目录 Deque 概述 特点 常用方法 双向队列操作 ArrayDeque Deque 概述 一个线性 collection,支持在两端插入和移除元素.名称 deque 是"double e ...
- STL之三:deque用法详解
转载于:http://blog.csdn.net/longshengguoji/article/details/8519812 deque函数: deque容器为一个给定类型的元素进行线性处理,像向量 ...
- std::deque
deque容器为一个给定类型的元素进行线性处理,像向量一样,它能够快速地随机访问任一个元素,并且能够高效地插入和删除容器的尾部元素.但它又与vector不同,deque支持高效插入和删除容器的头部元素 ...
- <软件架构与设计模式>侯捷老师关于Adapter类在STL中的深入解析和模式探讨
题外话:侯捷老师难得一年就来上九堂课就要会宝岛,特此留念签名赠语及合照以自勉. 学海无涯,为勤是岸 <正文开始> 昨天晚上连上了3个小时的大课探究单单讲了Adapter一个类,幸运的是本 ...
随机推荐
- C++拾遗(五)——类
类是 C++ 中最重要的特征.C++ 语言的早期版本被命名为“带类的 C(Cwith Classes)”,以强调类机制的中心作用.随着语言的演变,创建类的配套支持也在不断增加.语言设计的主要目标也变成 ...
- ORA-02273: this unique/primary key is referenced by some foreign keys
关于ORA-02273错误,以前还真没有仔细留意过.昨天遇到了这个问题,遂顺便总结一番,以后遇到这类问题就可以直接用下面方案解决.如下所示,我们首先准备一下测试环境. CREATE TABLE TES ...
- [学习总结] python语言学习总结 (二)
1.python中的拆包 之前就只写了*可以是未知数量的参数,**可以传入未知数量命名参数.这次详细记下拆包. def f1(a, *l): print(a) # 不拆包 print(l) # 拆包 ...
- java基础——反射机制
反射机制是什么 反射机制就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为jav ...
- this经典试题
<body> <div class="container"> <h3>输出内容</h3> <pre> var name ...
- Spring Security和Shiro的比较和使用
https://blog.csdn.net/it_java_shuai/article/details/78054951 Spring Security和Shiro的比较和使用 2017年09月21日 ...
- Voyager的数据库操作与Bread Builder,解决国内打开网速超级慢的问题
Products表的创建: Bread Builder 伟大的XX封了谷哥,所以有关网站实在是打不开,正准备放弃的时候,突然发现问题了,对就是这个网站ajax.googleapis.com,由于调用的 ...
- day24 01 初识继承
day24 01 初识继承 面向对象的三大特性:继承,多态,封装 一.继承的概念 继承:是一种创建新类的方式,新建的类可以继承一个或者多个父类,父类又可称基类或超类,新建的类称为派生类或者子类 cla ...
- leetcode-6-basic
解题思路: 这道题真实地反映了我今晚有多脑残=.=只需要从根号N开始向前找,第一个能被N整除的数就是width,然后存到结果就 可以了.因为离根号N越近,width越大,与length的差越小. ve ...
- Python中的并发
目录 Python并发 并发三种层次 协程 生成者消费者 新关键字 网络io 线/进程 例子 线程池 进程通信 并发池 future对象 executor对象 参考 Python并发 并发三种层次 个 ...