(1)deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双端数组,而vector是单端的。
(2)deque在接口上和vector非常相似,在许多操作的地方可以直接替换。
(3)deque可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法,这个等下会详讲)。
(4)deque头部和尾部添加或移除元素都非常快速。但是在中部安插元素或移除元素比较费时。
(5)deque采用模板类实现,deque对象的默认构造形式:
deque<T> deqT; //尖括号内还可以设置指针类型或自定义类型。
例如: deque <int> deqInt; //一个存放int的deque容器。
(6)deque的相关用法:
deque(beg,end); //构造函数将[beg, end)区间中的元素拷贝给本身。注意该区间是左闭右开的区间。
deque(n,elem); //构造函数将n个elem拷贝给本身。
deque(const deque &deq); //拷贝构造函数。
deque.push_back(elem); //在容器尾部添加一个数据
deque.push_front(elem); //在容器头部插入一个数据
deque.pop_back(); //删除容器最后一个数据
deque.pop_front(); //删除容器第一个数据
deque.at(idx); //返回索引idx所指的数据,如果idx越界,抛出out_of_range。
deque[idx]; //返回索引idx所指的数据,如果idx越界,不抛出异常,直接出错。
deque.front(); //返回第一个数据。
deque.back(); //返回最后一个数据
deque.begin(); //返回容器中第一个元素的迭代器。
deque.end(); //返回容器中最后一个元素之后的迭代器。
deque.rbegin(); //返回容器中倒数第一个元素的迭代器。
deque.rend(); //返回容器中倒数最后一个元素之后的迭代器。
deque.assign(beg,end); //将[beg, end)区间中的数据拷贝赋值给本身。注意该区间是左闭右开的区间。
deque.assign(n,elem); //将n个elem拷贝赋值给本身。
deque& operator=(const deque &deq); //重载等号操作符
deque.swap(deq); // 将vec与本身的元素互换
deque.size(); //返回容器中元素的个数
deque.empty(); //判断容器是否为空
deque.resize(num); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。如果容器变短,则末尾超出容器长 度的元素被删除。
deque.resize(num, elem); //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。如果容器变短,则末尾超出 容器长度的元素被删除。
deque.insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置。
deque.insert(pos,n,elem); //在pos位置插入n个elem数据,无返回值。
deque.insert(pos,beg,end); //在pos位置插入[beg,end)区间的数据,无返回值。
deque.clear(); //移除容器的所有数据
deque.erase(beg,end); //删除[beg,end)区间的数据,返回下一个数据的位置。
deque.erase(pos); //删除pos位置的数据,返回下一个数据的位置。
#include<iostream>
#include<deque>
using namespace std;
int main()
{
deque<int> d1(10);
for(int i=0;i<d1.size();i++)
{
d1[i] = i;
}
d1.push_back(99); //在容器尾部插入99
d1.push_front(88); //在容器头部插入88
d1.front() = 77; //返回第一个数据 用77代替
d1.back() = 66; //返回最后一个数据 用66代替
d1.pop_back(); //删除容器最后一个数据
d1.pop_front(); //删除容器第一个数据
for(deque<int>::iterator it = d1.begin(); it != d1.end(); it++)
{
cout<< *it <<" ";
}
cout<<endl;
cout<< "-----------------" <<endl;
int array[]={1,2,3,4,5,6,3,8,9,3};
//把区间里面的东西拷给d2
deque<int> d2(array, array + sizeof(array)/sizeof(array[0]));
deque<int>::iterator it = d2.begin();
while(it != d2.end())
{
if(*it == 3)
{
it = d2.erase(it); //返回下一个元素的迭代器
}
else
{
it++;
}
}
for(deque<int>::iterator it = d2.begin(); it != d2.end(); it++)
{
cout<< *it <<" "; //输出除了3以外的内容
}
cout<<endl;
return 0;
}
如何在excel中写公式连接字符串时如何生成单引号和双引号?本人在工作中常用到excel来辅助编程。当要做大量重复而有规律的操作时,特别是文本编辑,excel的公式可以起到相当强大的作用,增加工作效率!下面介绍其中大家可能常遇到的两个难点。对我来说也是两个容易忘记的点,自己写下来方便以后忘了再查。连接双引号假如有两个单元格,a2,b2。他们的内容分别是 你好 和 我也好 现在我需要用一个公式在c2中显示 “你好,我也好”方法如下:=""""&a2&","&b2&""""总
主从同步故障总结错误一[ERROR] Slave I/O: error connecting to master '[email protected]:3306' - retry-time: 60 retries: 2, Error_code: 1045错误原因:从库用来连接主库的用户权限或者密码不对解决方法:首先在主库上检查用来主从复制的用户权限,如果没有问题在检查从库使用的密码是否正确。错误二140331 10:08:18 [ERROR] Error reading mas
I want to sort a given array of strings alphabetically using python, but lowercase words should appear first.我想使用python按字母順序對給定的字符串數組進行排序,但首先應出現小寫字。An example:一個例子:#!/usr/local/bin/python2.7arr=['A','...
小伙伴们,你们好呀!我是老寇。
新版Edge浏览器弹出“ 禁用开发人员模式扩展 ”亲测好用的解决方案最近装好插件百度网盘助手把百度网盘转到aria2下载,结果浏览器总是弹出禁用开发人员模式扩展,在网上搜了很多方法,发现只有这两种对Edge浏览器有用第一种可行的方法:火绒的弹窗拦截,亲测好用,就是会卡几秒第二种可行的方法:官网下载edge dev下载地址:https://www.microsoftedgeinsider.com/en-us/download选择中间的dev版本edge dev还需要再次进行扩展插件的添加。(因
第二步:运行报表为某种格式这一步按某种格式运行报表,生成输出字节流,相当于iReport中点击,不过这一步并未生成输出结果,只是生成输出结果的字节流,为下一步的的输出字节流做好了充分的准备。[@more@]第二步:运行报表为某种...
一、简介(A)、介绍Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。Swagger的目标是对REST API定义一个标准的和语言无关的接口,可让人和计算机无需访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过Swagger进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层编程所实现的接口类似,Sw...
TCP端口(静态端口)TCP 0= ReservedTCP 1=TCP Port Service MultiplexerTCP 2=DeathTCP 5=Remote Job Entry,yoyoTCP 7=EchoTCP 11=SkunTCP 12=BomberTCP 16=SkunTCP 17=SkunTCP 18=消息传输协议,skunTCP 19=SkunTCP 2...
CPA联盟国外又称广告联盟国外也叫LEAD,是指导和带领他人完成一定任务的过程,如注册、邮件提交、邮件确认等。其本质是引导访客通过自己的推广链接完成广告主下达的任务,从而获得广告主支付的佣金。目前,lead的运作方式主要有两种:正式和非正式。常规的操作方法是利用网站、SEO等相关页面进行推广,通过主动营销推广,获取更多的访客,引导访客完成任务。优点:定期稳定的收入。缺点:见效慢,前期资金大,技术含量高。非正规操作法,也叫EMU,本质上是通过欺骗的方式完成广告主的任务,从而获得佣金。当然,要达到这种效果需要很
欢迎关注我的公众号:Romi的杂货铺在Excel中有sumif,countif等函数可以实现求特定条件下数值的加总和计数,那么如何在一个或多个条件下求出此时的最大值或者最小值呢?其实sumif函数和countif函数实际上都是可以由sum/count+if函数通过数组实现的,所以求特定条件下的最大/小值也可以使用同样的方法。同时maxifs函数已经可以在office365和office 201...
文件放在resources文件夹下,打成jar包后会出现在BOOT_INF/classes/xx.xx下;文件路径使用绝对路径"/xx.xx",用classLoader加载url和创建InputStream:URL fileURL=this.getClass().getResource("/xx.xx");InputStream is=this.getClass().getResourceA...