deque
deque
底层数据结构
- 动态开辟的二维数组
- 第一维数组中存放的是第二维数组的指针
- 每个第二维数组大小为512字节。假如存放的是**_Tp类型,每个第二维数组存放512/(sizeof(_Tp**))个元素
- 按照第一维数组大小二倍进行扩容
举例
-
当deque进行push_back,将下半部分空间元素添加满的时候会进行扩容,以原来空间二倍进行扩容。如下所示。


会以原来2倍空间开辟新的空间,并且将原数据复制到新的内存空间。
-
deque进行push_front与push_back类似。
二倍扩容代码
template <class _Tp, class _Alloc>
void deque<_Tp,_Alloc>::_M_reallocate_map(size_type __nodes_to_add,bool __add_at_front)
{size_type __old_num_nodes = _M_finish._M_node - _M_start._M_node + 1;size_type __new_num_nodes = __old_num_nodes + __nodes_to_add;_Map_pointer __new_nstart;//省略部分.....{size_type __new_map_size = _M_map_size + max(_M_map_size, __nodes_to_add) + 2; // _M_map_size第一维数组大小,新扩容空间为原空间2倍_Map_pointer __new_map = _M_allocate_map(__new_map_size); // 按照新空间大小进行扩容__new_nstart = __new_map + (__new_map_size - __new_num_nodes) / 2+ (__add_at_front ? __nodes_to_add : 0); // 定位新空间中元素存放的起始位置,起始位置为__new_nstartcopy(_M_start._M_node, _M_finish._M_node + 1, __new_nstart); // 将原二维数组元素拷贝到新数组_M_deallocate_map(_M_map, _M_map_size);// 释放原二维数组空间_M_map = __new_map; _M_map_size = __new_map_size;}
}
相关文章:
deque
deque 底层数据结构 动态开辟的二维数组第一维数组中存放的是第二维数组的指针每个第二维数组大小为512字节。假如存放的是**_Tp类型,每个第二维数组存放512/(sizeof(_Tp**))个元素按照第一维数组大小二倍进行扩容 举例 当deque进行push_back,将下半部分空间元素…...
YOLOv11改进策略【卷积层】| CVPR-2020 Strip Pooling 空间池化模块 处理不规则形状的对象 含二次创新
一、本文介绍 本文记录的是利用Strip Pooling模块优化YOLOv11的目标检测网络模型。Strip Pooling结合了长而窄的卷积核形状在一个空间维度上的长程关系捕捉能力和在另一个空间维度上的局部细节捕捉能力,有效地处理复杂的场景信息。这一机制通过采用 1 N 1N 1N或 N 1 N1 N1的…...
yt-dlp下载视频
插件官方下载地址 通过以下命令行使用 yt-dlp下载 (base) D:\tool\video>cd D:\tool\video (base) PS D:\tool\video> .\vdownlod.bat 此处输入链接或者(base) D:\tool\video>yt-dlp -f bv[extmp4]ba[extm4a] --cookies d:\Downloads\www.youtube.com_cookies.txt -…...
oracle insert忽略主键冲突,忽略重复记录
在INSERT语句中使用IGNORE_ROW_ON_DUPKEY_INDEX提示: INSERT /* IGNORE_ROW_ON_DUPKEY_INDEX(table_name, index_name) */ INTO table_name(column1, column2) VALUES(value1, value2); 或 INSERT /* IGNORE_ROW_ON_DUPKEY_INDEX(table_name(column_name)) */ …...
小新学习k8s第四天之发布管理
一、金丝雀发布(灰度发布) Deployment控制器支持自定义控制更新过程中的滚动节奏,如“暂停(pause)”或“继续(resume)”更新操作。 ①比如等待第一批新的Pod资源创建完成后立即暂停更新过程,此时,仅存在一部分新版本的…...
01_IAR新建CC2530工程
IAR建立CC2530工程 前言 由于很多Zigbee商家提供的教程未有从零建立CC2530工程的讲解,可能会导致后面的开发中出现一些琐碎的问题。本文将以LED流水灯为例,从0到1用IAR建立CC2530工程。 IAR介绍 IAR Embedded Workbench被广泛应用于消费电子、…...
原生鸿蒙的竞争力到底如何?
目录 1. 崛起与挑战2. 安全机制3. 自动化检测前移4. 深入探讨开发者服务优势 1. 崛起与挑战 长期以来,移动操作系统市场被IOS和安卓所垄断,一直都难以推出完整的自主系统,面临诸多挑战,如推广困难、应用适配难度大,以及…...
数字化生态平台:关键功能全解析
在当今数字化浪潮中,数字化生态平台正发挥着举足轻重的作用。那么,它的关键功能究竟有哪些呢?让我们一探究竟。 首先,数据集成与管理是数字化生态平台的重要功能之一。它能够从多个来源收集数据,包括企业内部系统、外…...
c 到 c++ 过渡
c基础入门 #include <iostream> #include <cmath> #include <unistd.h> // 总结:按照书写依次往下,先看 iostream 再看 cxxx 最后 xxx.husing namespace std; // 本质:自定义作用域,作用域就在该命名空间内部。…...
[linux驱动开发--环境搭建] qemu-9.1+linux-kernel-6.11
本文档模拟vexpress-a9开发板,作为铁头娃,要学就学最新的包 已经上传到github仓库 目录 编译qemu-9.1编译linux-kernel-6.11编译busybox-1.36.1NFS挂载 1. qemu-stable-9.1源码编译安装 1.1. 下载qemu源码的stable-9.1分支 仓库地址 mkdir qemu_9.…...
019集——获取CAD图中多个实体的包围盒(CAD—C#二次开发入门)
如下图所示,获取多个实体的最大包围盒,用红色线表示: 也可单独选圆的包围盒 部分代码如下: using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; using A…...
【Clickhouse 探秘】Clikchouse 有哪些表引擎?你都知道哪些?
👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区&#x…...
你好,C++并发世界
C并发编程的主要目的是任务隔离和提高性能 是的,C并发编程的主要目的是任务隔离和提高性能。具体来说,可以总结为以下几点: 任务隔离:通过并发编程,程序可以将不同的任务或计算分隔开,这样可以防止它们之间…...
windows10 安装 达梦数据库DM8
一. 前期工作 下载 https://www.dameng.com/list_103.html 通过百度网盘分享的文件:达梦数据库 链接:https://pan.baidu.com/s/1mJcT3UiwojeWIhXpAwh-RA 提取码:jyzi 点我: 想要 解压 双击iso文件 二. 安装步骤 1 .双击setup.ext安装 …...
ntp交叉编译 ntpdate时间同步
NTP(Network Time Protocol,网络时间协议)是一种用于在计算机系统之间同步时钟的协议,广泛覆盖网络环境中,确保网络设备和计算机上的时间保持一致。NTP 是基于 UDP 协议工作在123号端口上,能够在不同的网络条件下达到数千级别的精度同步时间。 实现windows上位机作为ntp服…...
微服务实战系列之玩转Docker(十六)
导览 前言Q:基于容器云如何实现高可用的配置中心一、etcd入门1. 简介2. 特点 二、etcd实践1. 安装etcd镜像2. 创建etcd集群2.1 etcd-node12.2 etcd-node22.3 etcd-node3 3. 启动etcd集群 结语系列回顾 前言 Docker,一个宠儿,一个云原生领域的…...
Solana 代币 2022 — Transfer Hook
从零到英雄的 Solana 代币 2022 — Transfer Hook Token 2022 计划引入了几项令人兴奋的扩展,增强了铸造和代币账户的功能。在这些功能中,我个人最喜欢的是Transfer Hook (转账钩子) 。 想象时间 让我们戴上想象的帽子…...
网络爬虫中的反爬虫技术:突破限制,获取数据
,网络爬虫已成为获取大量网络数据的重要工具。然而,随着爬虫技术的发展,许多网站也开始采用各种反爬虫措施来保护自己的数据。作为爬虫开发者,我们需要不断更新我们的技术,以应对这些反爬虫措施。本文将详细介绍一些常…...
【ROS2】cv_bridge:ROS图像消息和OpenCV的cv::Mat格式转换库
1、简述 cv_bridge可以实现ROS图像消息(sensor_msgs::msg::Image)和OpenCV的cv::Mat格式的转换。 cv_bridge支持各种常见的图像编码格式,包括JPEG、PNG、BMP等。 2、互转 1)cv::Mat转sensor_msgs::Image cv::Mat image; sensor_msgs::ImagePtr pMsg = cv_bridge::CvIma…...
【Web.路由】——URL生成
前几篇文章介绍了路由的相关知识,包括原理,模板和约束。围绕的一个点就是URL,那么URL是如何生成的呢? 在 ASP.NET CORE应用程序中,使用了一个叫 LinkGenerator的链接生成器来生成URL的。 LinkGenerator是一个中间件组件…...
告别手写UI!用VSCode+QtDesigner+PyQt5,5分钟搞定你的第一个Python图形界面
5分钟极速构建Python GUI:VSCodeQtDesignerPyQt5全流程实战 每次看到同事用代码逐行构建UI界面时,总忍不住想起自己初学时的痛苦经历——调整一个按钮位置要反复运行程序,修改边距像素值就像在玩"猜数字"游戏。直到发现QtDesigner这…...
无王无帝定乾坤,来自田间第一人 海棠藏圣定山河
无王无帝定乾坤,来自田间第一人。 自古山河安定,世人皆归功于帝王镇守、朝堂统御, 仿佛万里乾坤唯有王权可镇、唯有霸业可安。 然则山河气运自有天道,世间安定自有公理, 强权只能维系一时疆域,正道方能稳固…...
中国科学技术大学学位论文LaTeX模板:5个高效排版技巧与终极指南
中国科学技术大学学位论文LaTeX模板:5个高效排版技巧与终极指南 【免费下载链接】ustcthesis LaTeX template for USTC thesis 项目地址: https://gitcode.com/gh_mirrors/us/ustcthesis 如果你正在准备中国科学技术大学的学位论文,那么ustcthesi…...
3步解决Windows热键冲突:Hotkey Detective强力侦测工具指南
3步解决Windows热键冲突:Hotkey Detective强力侦测工具指南 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是…...
如何5分钟完成浏览器脚本安装:免费网盘直链解析工具终极指南
如何5分钟完成浏览器脚本安装:免费网盘直链解析工具终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 …...
Android WebView进阶:从基础API到AndroidX WebKit实战解析
1. WebView基础:从调试到交互全解析 第一次接触WebView时,我完全被这个"浏览器套娃"搞懵了。直到踩了无数坑才发现,掌握这几个核心API就像拿到了打开混合开发大门的钥匙。调试模式绝对是开发者的第一道救命符 - 在Chrome地址栏输入…...
告别HAL库:用GD32标准库为RT-Thread打造轻量级驱动(以F4系列为例)
告别HAL库:用GD32标准库为RT-Thread打造轻量级驱动(以F4系列为例) 在嵌入式开发领域,HAL库因其跨平台兼容性和易用性广受欢迎,但对于追求极致性能和精简代码的开发者而言,标准库往往能带来更直接的硬件控制…...
NotebookLM权限颗粒度管控实战:从入门到精通的7步精准授权法(含Google内部RBAC配置模板)
更多请点击: https://intelliparadigm.com 第一章:NotebookLM权限控制设置概览 NotebookLM 是 Google 推出的基于用户自有文档构建个性化 AI 助手的实验性工具,其权限模型聚焦于数据主权与最小化访问原则。默认状态下,所有上传文…...
如何快速清理Mac残留文件:免费开源工具终极指南
如何快速清理Mac残留文件:免费开源工具终极指南 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 你是否曾经遇到过这样的困扰?明明已经…...
从零搭建一个智能视频监控系统:3D定位、ONVIF控制与Python UI实战
从零搭建智能视频监控系统:3D定位、ONVIF控制与Python UI实战 在智能安防和物联网应用蓬勃发展的今天,具备3D定位功能的视频监控系统正成为行业新宠。本文将带您从零开始,基于树莓派或普通PC,结合支持ONVIF协议的球型摄像机&#…...
