deque容器
deque容器的基本概念
deque 是 C++ 标准库中的双端队列(double-ended queue)容器,提供了在两端进行插入和删除操作的功能。
deque与vector区别:
- vector对于头部的插入删除效率低,数据量越大效率越低。
- deque相对而言,对头部的插入删除速度会比vector块。
- vector访问元素时的速度会比deque快,这和两者的内部实现有关。
deque容器的常用函数:
1. 构造和赋值函数:
deque<T>
: 创建一个空的deque
对象。deque<T>(size_t n, const T& val)
: 创建一个包含n
个初始值为val
的元素的deque
对象。deque<T>(const deque<T>& other)
: 创建一个新的deque
对象,它是从另一个deque
对象other
中进行复制构造得到的。operator=
: 将一个deque
对象的内容复制给另一个deque
对象。
deque<T>& operator=(const deque<T>& other);
2. 容量相关函数:
size()
: 返回deque
中元素的个数。empty()
: 检查deque
是否为空。resize(size_t n)
: 改变deque
的大小,使其包含n
个元素。max_size()
: 返回deque
可以包含的最大元素个数。
3. 访问元素函数:
operator[]
: 访问指定位置的元素,可以通过索引访问。at(size_t pos)
: 访问指定位置的元素,提供了越界检查。front()
: 返回第一个元素的引用。back()
: 返回最后一个元素的引用。
4. 修改容器函数:
push_back(const T& val)
: 在deque
的末尾插入一个元素。push_front(const T& val)
: 在deque
的前面插入一个元素。pop_back()
: 移除deque
的最后一个元素。pop_front()
: 移除deque
的第一个元素。insert(iterator pos, const T& val)
: 在指定位置之前插入一个元素。erase(iterator pos)
: 移除指定位置的元素。clear()
: 移除deque
中的所有元素。
4. 迭代器相关函数:
begin()
: 返回指向deque
开始位置的迭代器。end()
: 返回指向deque
结束位置的迭代器。rbegin()
: 返回指向deque
最后一个元素的逆向迭代器。rend()
: 返回指向deque
第一个元素之前的逆向迭代器。
deque内部工作原理
deque内部有一个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据。
中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间。
deque基本操作
deque构造器
函数原型:
deque<T> deqT;
//默认构造形式。deque(beg,end);
//构造函数将[beg,end)区间中的元素拷贝给本身。deque(n,elem);
//构造函数将n个elem拷贝给本身。deque(const deque &beq);
//构造拷贝函数。
#include<iostream>
#include<deque>
using namespace std;
//deque构造函数
void printDeque(const deque<int>& d){
//这是一个打印函数,我们希望它只读,不能修改数据,故在形参中加入constfor(deque<int>::const_iterator it=d.begin();it!=d.end();it++){//迭代器指向的内容不能改变// *it=100; 容器中的数据不可以修改了cout<<*it<<" ";}cout<<endl;
}
void test1(){deque<int> d1;//默认构造for(int i=0;i<10;i++){d1.push_back(i);}printDeque(d1);deque<int> d2(d1.begin(),d1.end());//构造函数将[beg,end)区间中的元素拷贝给本身printDeque(d2);deque<int> d3(10,100);//构造函数将n个elem拷贝给本身printDeque(d3);deque<int> d4(d3);printDeque(d4);
}
int main(){test1();system("pause");return 0;
}
deque容器和vector容器的构造方式几乎一致,灵活使用即可。
deque的赋值操作
函数原型:
deque& operator=(const deque& deq);
//重载等号操作符assign(beg,end);
//将[beg,end)区间中的数据拷贝赋值给本身assign(n,elem);
//将n个elem拷贝赋值给本身
#include<iostream>
#include<deque>
using namespace std;
void printDeque(const deque<int>& d){for(deque<int>::const_iterator it=d.begin();it!=d.end();it++){cout<<*it<<" ";}cout<<endl;
}
//deque赋值操作
void test1(){deque<int> d1;for(int i=0;i<10;i++){d1.push_back(i);}printDeque(d1);//operator=赋值deque<int> d2;d2=d1;printDeque(d2);//assign赋值deque<int> d3;d3.assign(d1.begin(),d1.end());printDeque(d3);deque<int> d4;d4.assign(10,100);printDeque(d4);
}
int main(){test1();system("pause");return 0;
}
deque大小操作
函数原型:
-
deque.empty();
//判断容器是否为空。 -
deque.size();
//返回容器中元素的个数。 -
deque.resize(num);
//重新指定容器的长度为num,若容器变长,则以默认值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。 -
deque.resize(num,elem);
//重新指定容器的长度为num,若容器变长,则以elem值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。
deque中并没有容量的概念,因为deque的内部结构中并没有容量的限制,deque可以无限开辟空间。
#include<iostream>
#include<deque>
using namespace std;
//deque大小操作
void printDeque(const deque<int>& d){for(deque<int>::const_iterator it=d.begin();it!=d.end();it++){cout<<*it<<" ";}cout<<endl;
}
void test1(){deque<int> d1;for(int i=0;i<10;i++){d1.push_back(i);}printDeque(d1);if(d1.empty()){cout<<"d1为空"<<endl;}else{cout<<"d1不为空"<<endl;cout<<"d1的大小为:"<<d1.size()<<endl;}// d1.resize(15);d1.resize(15,1);printDeque(d1);d1.resize(5);printDeque(d1);
}
int main(){test1();system("pause");return 0;
}
deque插入和删除
函数原型:
两端插入删除:
push_back(elem);
//在容器尾部添加一个数据push_front(elem);
//在容器头部插入一个数据pop_back();
//删除容器最后一个数据pop_front();
//删除容器的第一个数据
指定位置操作:
insert(pos,elem);
//在pos位置插入一个elem元素的拷贝,返回新数据的位置insert(pos,n,elem);
//在pos位置插入n个elem数据,无返回值insert(pos,beg,end);
//在pos位置插入[beg,end)区间的数据,无返回值clear();
//清空容器的所有数据erase(beg,end);
//删除[beg,end)区间的数据,返回下一个数据的位置erase(pos);
//删除pos位置的数据,返回下一个数据的位置
插入和删除提供的位置是迭代器
尾插 —— push_back
头插 —— push_front
尾删 —— pop_back
头删 —— pop_front
deque数据存取
at(int idx);
//返回索引idx所指的数据operator[];
//返回索引idx所知的数据front();
//返回容器第一个数据元素back();
//返回容器中最后一个数据元素
deque排序
利用算法实现对deque容器进行排序
sort(iterator beg,iterator end);//对beg和end区间内元素进行排序
sort算法非常实用,使用时包含头文件algorithm即可。
相关文章:
![](https://i-blog.csdnimg.cn/direct/2c8fe034e25144db876a5f1a5665a38a.png)
deque容器
deque容器的基本概念 deque 是 C 标准库中的双端队列(double-ended queue)容器,提供了在两端进行插入和删除操作的功能。 deque与vector区别: vector对于头部的插入删除效率低,数据量越大效率越低。deque相对而言&am…...
![](https://www.ngui.cc/images/no-images.jpg)
Redis远程字典服务器(9)—— 类型补充
类型查询传送门:Understand Redis data types | Docs 一,stream类型 官方文档对于这个类型的解释是:streams是一个数据结构,它表现得像一个 “append-only log”,就是只能往后面添加,底层是字符串&#x…...
![](https://i-blog.csdnimg.cn/direct/93c47cde17c54e1fb852a196eba263a5.png)
VMware虚拟机nat无法联通主机
VMware在nat模式下主机无法ping通虚拟机 原因: 虚拟机和对应的网卡不在一个网段 虚拟机开启了防火墙 解决方法: 首先判断虚拟机的网络ip是否和网卡在一个网段上 判断虚拟机使用的网卡 nat模式在VMware虚拟机中一般只有一个对应的网卡 如图笔者的nat网卡为VM…...
![](https://i-blog.csdnimg.cn/direct/0f9f4736f3904b6ab021b25011fe96be.png)
「字符串」详解AC自动机并实现对应的功能 / 手撕数据结构(C++)
目录 前置知识 概述 核心概念:fail指针 作用 构建 图示 Code 成员变量 创建销毁 添加词库 文本扫描 复杂度 Code 前置知识 在此前,你应该首先了解trie树(字典树)的概念: 「字符串」详解Trie࿰…...
![](https://i-blog.csdnimg.cn/direct/add618b7faec4e3387468eb64d0eb673.png)
freecad遭遇网络不同无法安装插件Addon Manager: Unexpected 0 response from server
16:31:18 Addon Manager: Unexpected 0 response from server 16:31:18 Failed to connect to GitHub. Check your connection and proxy settings. 打开freecad的插件管理器时候,有些地方,比如我在家里就不行,在公司就ok。 于是找到了解…...
![](https://www.ngui.cc/images/no-images.jpg)
Ruby模板引擎:构建动态视图的艺术
标题:Ruby模板引擎:构建动态视图的艺术 在Ruby on Rails的世界里,模板引擎是构建动态网页的基石。它们允许开发者将服务器端的逻辑嵌入到HTML中,实现数据的动态展示。本文将深入探讨Ruby中几种常用的模板引擎,包括ERB…...
![](https://i-blog.csdnimg.cn/direct/37029b3f7062447f93db6b577755634a.png)
HarmonyOS NEXT星河版零基础入门(3)
目录 1. 系统弹出框 2.interface转成class类 3.vp/fp 4. 写一个正方形 设置它的宽度 但不设定高度 不论屏幕怎么变实现他的宽高比 5.State 6.图片和资源 7.淘宝镜像 7.1windows 脚本禁用(操作策略 允许npm包的命令可执行) 8. es6&ArkTS中…...
![](https://www.ngui.cc/images/no-images.jpg)
第二十讲 python中的异常结构-try except-else-finally
目录 1.try... except 结构 2. try... 多个except结构 3. try...except...else结构 4. try...except...finally结构 5. return语句和异常处理问题 5.1 异常处理前的 return 5.2异常处理后的 return 5.3 finally 块中的 return 6.常见的异常 1.try... except 结构 try except 是…...
![](https://i-blog.csdnimg.cn/direct/e823c97958164b32a3d53944d0a5e602.png)
springer 投稿系统中返修注意点
初次提交 初次提交时, manuscript 提交的是 pdf 文件 返修后提交 在经过返修之后需要提交的是注意一下几点: 此时提交的Blined manuscript ,虽然名字没变,但不能再提交pdf 文件, 而需要提交的是可编辑的源文件 .te…...
![](https://www.ngui.cc/images/no-images.jpg)
CSS:display和visiblity
隐藏元素- display:none和visibility:hidden display 属性设置一个元素应如何显示,visibility 属性指定一个元素应可见还是隐藏。 隐藏一个元素可以通过吧display属性设置为“none”,或者把visibility属性设置为“hidden”。但是这两种会产生不同的结果…...
![](https://i-blog.csdnimg.cn/direct/5fda22f45dcb433488d60e260fe66350.png)
43.x86游戏实战-XXX寻找吸怪坐标
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…...
![](https://www.ngui.cc/images/no-images.jpg)
Redis地理位置相关应用
下面是一个结合 MySQL 数据库和 Redis 的地理位置服务示例,包含表结构、PHP 代码和 Redis 操作,用于处理基于地理位置的数据存储和查询。 1. 创建 MySQL 数据库表 首先,创建一个用于存储位置信息的 MySQL 表,如下所示࿱…...
![](https://i-blog.csdnimg.cn/direct/f69ed7f1ba5e4405861207252c3d5dac.png)
优化WAN流量:如何通过调整系统设置降低企业网络成本
一、症状与问题背景 当电脑显示空闲状态时,如果满足以下条件,第二拨号链接可能会意外激活: 您正在使用基于 Microsoft Windows 的计算机,该计算机连接到远程网络并且是 Active Directory 域服务 (AD DS) 域的成员。 您通过二级…...
![](https://www.ngui.cc/images/no-images.jpg)
Java-HttpHeaders请求头或响应头
HttpHeaders 是 Spring Framework 中的一个类,用于封装 HTTP 头部信息。它提供了一种方便的 方式来设置 HTTP 请求头和处理 HTTP 响应头。下面分别介绍如何使用 HttpHeaders 来设置请求 头和处理响应头。 设置请求头 在发送 HTTP 请求时,可以通过 HttpHeaders 设置各种请…...
![](https://www.ngui.cc/images/no-images.jpg)
Elasticsearch高阶查询
Elasticsearch高阶查询 文章目录 Elasticsearch高阶查询相关性和相关性算分相关性 (Relevance)什么是TF-IDFBM25explain关键字Boosting如何通过Boost控制想要的文档排在前面? 布尔查询(bool Query)查询语法语法格式 单字符串多字段查询三种场…...
![](https://i-blog.csdnimg.cn/direct/2ba18cfeacee46bd8459f25ed03539fc.png)
【流媒体】RTMPDump—RTMP_Connect函数(握手、网络连接)
目录 1. RTMP_Connect函数1.1 网络层连接(RTMP_Connect0)1.2 RTMP连接(RTMP_Connect1)1.2.1 握手(HandShake)1.2.2 RTMP的NetConnection(SendConnectPacket) 2.小结 RTMP协议相关&am…...
![](https://www.ngui.cc/images/no-images.jpg)
通过https方式访问内网IP
单位要做个用浏览器扫二维码的功能。我先在本地测试一直不成功,后来放到服务器上运行成功了。比较了一下,服务器上是https,但是本地没有证书。我问了一下信安的同事,要求二维码必须在本地扫描,不能上公网。所以只好在本…...
![](https://www.ngui.cc/images/no-images.jpg)
flutter 键盘弹出 都会重新Build
原因是调用MediaQuery.of(context)后,点击TextField组件时会导致调用build方法。 解决方法:在Scaffold组件的body嵌套Builder组件,然后设置一个BuildContext变量,将Builder组件中的context传递给BuildContext变量,然后…...
![](https://www.ngui.cc/images/no-images.jpg)
RedisDistributedLock 分布式锁
设计一个简单的 RedisDistributedLock 类,实现单例模式,并包含基本的锁定机制。这个类将使用 Redis 来管理锁,确保在分布式系统中资源的同步访问 import redis.clients.jedis.Jedis;public class RedisDistributedLock {private static Redi…...
![](https://i-blog.csdnimg.cn/direct/549cb3b0c7fe4c85a3d06a004dc4a8eb.png)
Java之包装类
Java中的包装类(Wrapper Classes)是基本数据类型的对象包装类。Java为每个基本数据类型(如int、char等)提供了对应的包装类,使得基本类型可以被当作对象来处理。这些包装类位于java.lang包中。 包装类的用途 对象化&a…...
![](https://i-blog.csdnimg.cn/direct/9cf11cf3c4f84335ae7db200a78dda89.png)
Linux - 权限
文章目录 一、用户二、文件 一、用户 1、Linux下有两种用户:超级用户(root)、普通用户。 超级用户:可以再linux系统下做任何事情,不受限制 。 普通用户:在linux下做有限的事情。 超级用户的命令提示符是“…...
![](https://i-blog.csdnimg.cn/direct/0fe5db714ccf411fa740872d9619a2c7.png)
免费图形化nginx管理工具nginxWebUI
nginxWebUI是一款图形化管理nginx配置得工具, 可以使用网页来快速配置nginx的各项功能, 包括http协议转发, tcp协议转发, 反向代理, 负载均衡, 静态html服务器, ssl证书自动申请、续签、配置等, 配置好后可一建生成nginx.conf文件, 同时可控制nginx使用此文件进行启动与重载, 完…...
![](https://www.ngui.cc/images/no-images.jpg)
编程上的挫折不可怕,可怕的是你畏惧了
如何克服编程学习中的挫折感 编程学习之路上,挫折感就像一道道难以逾越的高墙,让许多人望而却步。然而,真正的编程高手都曾在这条路上跌倒过、迷茫过,却最终找到了突破的方法。那么,我是如何在Bug的迷宫中找到出口的&…...
![](https://www.ngui.cc/images/no-images.jpg)
docker逃逸手法
docker逃逸手法 基本docker操作docker 命令dockerfilesDocker Compose漏洞利用容器漏洞 基本docker操作 docker 命令 # docker拉取 docker pull # 指定版本拉取 docker pull ubuntu:22.04# 显示镜像可执行的操作 docker image # 列出存储在本地系统上的所有图像 docker image…...
![](https://i-blog.csdnimg.cn/direct/d3f10a2ad4e8428ca5b0051f327d7a2e.png)
3 pytest Fixture
3 pytest Fixture 3.1 通过 conftest.py 共享 fixture3.2 使用 fixture 执行配置及销毁逻辑3.3 使用 --setup-show 回溯 fixture 的执行过程3.4 使用 fixture 传递测试数据3.5 使用多个 fixture3.6 指定 fixture 作用范围3.7 使用 usefixtures 指定 fixture3.8 为常用 fixture …...
![](https://i-blog.csdnimg.cn/direct/1970990be04948acbf674f7de0737f90.png)
pinctl 和 gpio子系统驱动
一.设备树中添加pinctl节点模板 1.创建对应的节点 同一个外设的 PIN 都放到一个节点里面,打开 imx6ull-14x14-evk.dts,在 iomuxc 节点 中的“imx6ul-evk”子节点下添加 “pinctrl_test” 节点。添加完成以后如下所示: pinctrl_test:test_g…...
![](https://www.ngui.cc/images/no-images.jpg)
RocketMQ消息堆积了怎么解决?
RocketMQ 的消息堆积,一般都是因为客户端本地消费过程中,由于消费耗时过长或消费并发度较小等原因,导致客户端消费能力不足,出现消息堆积的问题。 当线上出现消息堆积的问题时,一般有以下几种方式来解决: 增加消费者…...
![](https://i-blog.csdnimg.cn/direct/63bc18f1e0904332b1b75781db124f59.png)
C++第十二弹 -- STL之list模拟实现
文章索引 前言模拟实现list1. ListNode节点类2. list的迭代器封装3. 反向迭代器4. list类的模拟实现测试代码 list的反向迭代器总结 前言 通过模拟实现可以让我们更加深刻的理解C底层STL的实现逻辑, 本篇就对list的底层进行模拟实现. 博客主页: 酷酷学!!! 点击关注 共同进步!…...
![](https://i-blog.csdnimg.cn/direct/f0fd297d7a5b47df9c4018af54c17d3b.jpeg#pic_center)
Destiny of Gods首轮测试正式开启,参与玩家数量突破10万
天神风云,波澜再兴,GameFi链游聚合平台Destiny of Gods首款同名数字卡牌回合制游戏首轮测试定档8月20日20:00(GMT8),现已正式开启! 这是一个由人、游灵和神灵共存的世界,历经蛮荒时期的纷争与信…...
![](https://i-blog.csdnimg.cn/direct/17d141900878495cb65e6cadc2f6ab49.png)
QT聊天室基于Tcp
server.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget),server(new QTcpServer(this)) // 给服务器指针对象实例化空间{ui->setupUi(this); }Widget::~Widget() {delete ui; }…...
![](https://www.oschina.net/img/hot3.png)
用什么软件做动漫视频网站好/线上营销模式有哪些
2019独角兽企业重金招聘Python工程师标准>>> RestTemplate可以使用loadBalanced,但加上了oauth2的restTemplate 就识别不到服务名称了。 这个是个蛋疼的问题。 查了一天的github,发现了这是一个bug。 spring-cloud-security问题 看了半天也没…...
![](/images/no-images.jpg)
网站被别人备案/直通车优化推广
1、用fixed定位做的弹出框,弹出框里面有文本框。fixed在ios上兼容不友好,会造成光标乱跳。 解决方法:当弹出框弹出时给父元素加上fixed定位,此时页面无法滚动;弹出框关闭时移除fixed定位,页面恢复正常滚动。…...
![](/images/no-images.jpg)
国外幼女和成人做视频网站/seo点击排名源码
在Python语言中最常见的括号有三种,分别是:小括号()、中括号[]、花括号{};其作用也不相同,分别用来代表不同的Python基本内置数据类型。1、Python中的小括号():代表tuple元祖数据类型,元祖是一种不可变序列…...
![](http://images2015.cnblogs.com/blog/591709/201606/591709-20160621015616897-240297018.png)
怎么免费做自己的网站/合肥百度推广公司哪家好
先来介绍下 media,确切的说应该是 CSS media queries(CSS 媒体查询),媒体查询包含了一个媒体类型和至少一个使用如宽度、高度和颜色等媒体属性来限制样式表范围的表达式。CSS3 加入的媒体查询使得无需修改内容便可以使样式应用于某…...
![](https://img-my.csdn.net/uploads/201304/09/1365509691_2281.jpg)
建设网站的市场环境/东莞seo外包公司
1.安装bind包 yum install bind 2.创建住配置文件/etc/named.conf 在/var/named/chroot/etc目录下,创建配置文件named.conf 具体内容如下: options { directory "/var/named"; #工作目录 }; zone "****" IN …...