当前位置: 首页 > news >正文

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&#xff0c;将下半部分空间元素…...

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提示&#xff1a; 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第四天之发布管理

一、金丝雀发布&#xff08;灰度发布&#xff09; Deployment控制器支持自定义控制更新过程中的滚动节奏&#xff0c;如“暂停(pause)”或“继续(resume)”更新操作。 ①比如等待第一批新的Pod资源创建完成后立即暂停更新过程&#xff0c;此时&#xff0c;仅存在一部分新版本的…...

01_IAR新建CC2530工程

IAR建立CC2530工程 前言 ​ 由于很多Zigbee商家提供的教程未有从零建立CC2530工程的讲解&#xff0c;可能会导致后面的开发中出现一些琐碎的问题。本文将以LED流水灯为例&#xff0c;从0到1用IAR建立CC2530工程。 IAR介绍 ​ IAR Embedded Workbench被广泛应用于消费电子、…...

原生鸿蒙的竞争力到底如何?

目录 1. 崛起与挑战2. 安全机制3. 自动化检测前移4. 深入探讨开发者服务优势 1. 崛起与挑战 长期以来&#xff0c;移动操作系统市场被IOS和安卓所垄断&#xff0c;一直都难以推出完整的自主系统&#xff0c;面临诸多挑战&#xff0c;如推广困难、应用适配难度大&#xff0c;以及…...

数字化生态平台:关键功能全解析

​在当今数字化浪潮中&#xff0c;数字化生态平台正发挥着举足轻重的作用。那么&#xff0c;它的关键功能究竟有哪些呢&#xff1f;让我们一探究竟。 首先&#xff0c;数据集成与管理是数字化生态平台的重要功能之一。它能够从多个来源收集数据&#xff0c;包括企业内部系统、外…...

c 到 c++ 过渡

c基础入门 #include <iostream> #include <cmath> #include <unistd.h> // 总结&#xff1a;按照书写依次往下&#xff0c;先看 iostream 再看 cxxx 最后 xxx.husing namespace std; // 本质&#xff1a;自定义作用域&#xff0c;作用域就在该命名空间内部。…...

[linux驱动开发--环境搭建] qemu-9.1+linux-kernel-6.11

本文档模拟vexpress-a9开发板&#xff0c;作为铁头娃&#xff0c;要学就学最新的包 已经上传到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#二次开发入门)

如下图所示&#xff0c;获取多个实体的最大包围盒&#xff0c;用红色线表示&#xff1a; 也可单独选圆的包围盒 部分代码如下&#xff1a; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; using A…...

【Clickhouse 探秘】Clikchouse 有哪些表引擎?你都知道哪些?

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…...

你好,C++并发世界

C并发编程的主要目的是任务隔离和提高性能 是的&#xff0c;C并发编程的主要目的是任务隔离和提高性能。具体来说&#xff0c;可以总结为以下几点&#xff1a; 任务隔离&#xff1a;通过并发编程&#xff0c;程序可以将不同的任务或计算分隔开&#xff0c;这样可以防止它们之间…...

windows10 安装 达梦数据库DM8

一. 前期工作 下载 https://www.dameng.com/list_103.html 通过百度网盘分享的文件&#xff1a;达梦数据库 链接&#xff1a;https://pan.baidu.com/s/1mJcT3UiwojeWIhXpAwh-RA 提取码&#xff1a;jyzi 点我: 想要 解压 双击iso文件 二. 安装步骤 1 .双击setup.ext安装 …...

ntp交叉编译 ntpdate时间同步

NTP(Network Time Protocol,网络时间协议)是一种用于在计算机系统之间同步时钟的协议,广泛覆盖网络环境中,确保网络设备和计算机上的时间保持一致。NTP 是基于 UDP 协议工作在123号端口上,能够在不同的网络条件下达到数千级别的精度同步时间。 实现windows上位机作为ntp服…...

微服务实战系列之玩转Docker(十六)

导览 前言Q&#xff1a;基于容器云如何实现高可用的配置中心一、etcd入门1. 简介2. 特点 二、etcd实践1. 安装etcd镜像2. 创建etcd集群2.1 etcd-node12.2 etcd-node22.3 etcd-node3 3. 启动etcd集群 结语系列回顾 前言 Docker&#xff0c;一个宠儿&#xff0c;一个云原生领域的…...

Solana 代币 2022 — Transfer Hook

从零到英雄的 Solana 代币 2022 — Transfer Hook Token 2022 计划引入了几项令人兴奋的扩展&#xff0c;增强了铸造和代币账户的功能。在这些功能中&#xff0c;我个人最喜欢的是Transfer Hook &#xff08;转账钩子&#xff09; 。 想象时间 让我们戴上想象的帽子&#xf…...

网络爬虫中的反爬虫技术:突破限制,获取数据

&#xff0c;网络爬虫已成为获取大量网络数据的重要工具。然而&#xff0c;随着爬虫技术的发展&#xff0c;许多网站也开始采用各种反爬虫措施来保护自己的数据。作为爬虫开发者&#xff0c;我们需要不断更新我们的技术&#xff0c;以应对这些反爬虫措施。本文将详细介绍一些常…...

【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生成

前几篇文章介绍了路由的相关知识&#xff0c;包括原理&#xff0c;模板和约束。围绕的一个点就是URL&#xff0c;那么URL是如何生成的呢&#xff1f; 在 ASP.NET CORE应用程序中&#xff0c;使用了一个叫 LinkGenerator的链接生成器来生成URL的。 LinkGenerator是一个中间件组件…...

保姆级教程:用PHPStudy+红日靶场复现一次完整的内网渗透(从外网打到域控)

从零构建内网渗透实战&#xff1a;PHPStudy环境下的红日靶场攻防演练 在网络安全领域&#xff0c;内网渗透测试是检验企业防御体系完整性的重要手段。本文将带领读者使用常见的PHPStudy环境搭建红日靶场&#xff0c;通过模拟真实攻击路径&#xff0c;从外网Web渗透逐步深入内网…...

开源推荐系统项目数据管理实战:从零构建高质量训练数据集

开源推荐系统项目数据管理实战&#xff1a;从零构建高质量训练数据集 【免费下载链接】fun-rec 推荐系统入门教程&#xff0c;在线阅读地址&#xff1a;https://datawhalechina.github.io/fun-rec/ 项目地址: https://gitcode.com/datawhalechina/fun-rec 你是否曾满怀热…...

保姆级教程:用Docker Compose一键部署Dify AI平台(附国内镜像加速与端口冲突解决)

零门槛部署Dify AI开发平台&#xff1a;Docker Compose全流程指南与避坑手册 在AI应用开发领域&#xff0c;快速搭建一个稳定可靠的开发环境往往是项目成功的第一步。Dify作为一款面向开发者的AI应用开发平台&#xff0c;通过可视化编排和低代码方式大大降低了构建基于大语言模…...

Qwen3-VL-8B系统资源管理:监控与清理GPU显存和C盘空间

Qwen3-VL-8B系统资源管理&#xff1a;监控与清理GPU显存和C盘空间 长期运行像Qwen3-VL-8B这样的大模型服务&#xff0c;就像养了一头“数字大象”——它能力强大&#xff0c;但胃口也不小&#xff0c;尤其能吃GPU显存和硬盘空间。很多朋友刚开始部署时一切顺利&#xff0c;但跑…...

CoPaw个人助理深度体验:多通道对话+定时执行,解放双手的实用工具

CoPaw个人助理深度体验&#xff1a;多通道对话定时执行&#xff0c;解放双手的实用工具 1. CoPaw简介与核心功能 CoPaw是一款基于Qwen3-4B-Instruct-2507模型的个人助理型产品&#xff0c;由AgentScope团队开发。它最大的特点是能够部署在用户自己的环境中&#xff0c;实现数…...

React - React Redux 数据共享、Redux DevTools、React Redux 最终优化

一、React Redux 数据共享 1、基本介绍 combineReducers 函数用于汇总所有的 Reducer 变为一个总的 Reducer 2、演示 &#xff08;1&#xff09;redux constant // 定义 action 中 type 的常量值export const INCREMENT "increment"; export const DECREMENT "…...

CloudFlare Workers实现高级邮箱转发:过滤垃圾邮件+自动分类实战

CloudFlare Workers实现高级邮箱转发&#xff1a;过滤垃圾邮件自动分类实战 邮箱已经成为现代人工作和生活中不可或缺的工具&#xff0c;但随之而来的垃圾邮件、广告推广和各类通知也让收件箱变得杂乱无章。对于开发者和技术爱好者来说&#xff0c;传统的邮箱转发功能往往不能满…...

Overleaf项目本地化实战:用VS Code插件管理、Git版本控制,再搭配Copilot提效

Overleaf项目本地化实战&#xff1a;用VS Code插件管理、Git版本控制&#xff0c;再搭配Copilot提效 对于经常使用LaTeX撰写学术论文或技术文档的用户来说&#xff0c;Overleaf无疑是一个强大的云端协作平台。然而&#xff0c;当项目规模扩大、需要更精细的版本控制时&#xff…...

告别重复操作:用快马生成智能浏览器扩展,极速提升前端调试与数据提取效率

作为一名前端开发者&#xff0c;每天都要和网页元素打交道。调试样式、提取数据这些重复性工作&#xff0c;如果全靠手动操作&#xff0c;不仅效率低下还容易出错。最近我发现用InsCode(快马)平台可以快速生成定制化的浏览器扩展&#xff0c;把那些繁琐操作变成一键自动化&…...

M1 Mac 8GB内存跑不动7B模型?手把手教你用1.5B版DeepSeek+RAGFlow搭建个人知识库

M1 Mac 8GB内存跑不动7B模型&#xff1f;手把手教你用1.5B版DeepSeekRAGFlow搭建个人知识库 当M1 Mac用户尝试在本地部署大语言模型时&#xff0c;8GB内存往往成为难以逾越的障碍。特别是运行7B参数模型时&#xff0c;内存不足导致的崩溃和卡顿让许多开发者望而却步。本文将分…...