临夏州住房与建设局官方网站/搜索引擎优化简称seo

临夏州住房与建设局官方网站,搜索引擎优化简称seo,samba wordpress,免费网站成品一、底层架构深度剖析 1.1 内存管理机制 vector 通过三个指针实现动态内存管理: _start:指向分配内存的首元素(begin()返回值)_finish:指向最后一个元素的下一个位置(end()返回值)_end_of_st…

一、底层架构深度剖析

1.1 内存管理机制

vector 通过三个指针实现动态内存管理:

  • _start:指向分配内存的首元素(begin()返回值)
  • _finish:指向最后一个元素的下一个位置(end()返回值)
  • _end_of_storage:指向分配内存的末尾

内存增长公式: \(new\_capacity = max(2 \times old\_capacity, required\_size)\) (不同编译器实现可能略有差异,GCC 源码参考)

1.2 迭代器实现原理

// 典型迭代器定义(GCC实现)
typedef __gnu_cxx::__normal_iterator<pointer, vector> iterator;
typedef __gnu_cxx::__normal_iterator<const_pointer, vector> const_iterator;

 


二、核心操作最佳实践

2.1 构造与初始化

初始化方式时间复杂度适用场景
vector<int> v1;O(1)空容器初始化
vector<int> v2(100);O(n)预分配空间
vector<int> v3 = {1,2,3};O(n)列表初始化

推荐初始化方法

// C++17结构化绑定
auto [start, finish] = std::vector{1,2,3};

2.2 元素访问安全规范

// 安全访问模板
template<typename T>
T& safe_at(vector<T>& v, size_t index) {if (index >= v.size()) throw std::out_of_range("Index out of range");return v[index];
}

三、内存管理深度优化

3.1 扩容策略对比

STL 实现扩容系数源码参考
GCC2 倍vector.tcc
MSVC1.5 倍vector
Clang2 倍vector

扩容过程动态演示

3.2 内存碎片优化

使用std::pmr::vector(C++17)配合内存池:

std::pmr::monotonic_buffer_resource pool;
std::pmr::vector<int> vec{&pool};

四、高级技巧与性能调优

4.1 移动语义优化

vector<string> process_data() {vector<string> temp(1e6); // ...处理数据return std::move(temp); // 强制移动构造
}

4.2 异常安全保证

操作异常安全等级说明
push_back强保证失败时保持原状态
insert基本保证可能部分修改
emplace强保证C++11 新增

五、典型应用场景分析

5.1 矩阵运算优化

// 二维矩阵存储优化
vector<vector<double>> matrix(1000, vector<double>(1000));
// 改进方案:一维数组模拟
vector<double> flat_matrix(1000*1000);

5.2 游戏开发中的实体管理

struct GameObject {int id;float position[3];
};vector<GameObject> game_objects;
game_objects.reserve(10000); // 预分配空间

六、性能测试数据

6.1 不同操作耗时对比

操作类型10^4 元素耗时 (ms)10^6 元素耗时 (ms)
push_back0.1214.5
insert(begin)3.213200
erase(end-1)0.088.2

(测试环境:Intel i7-12700K,测试代码参考)


七、延伸阅读推荐

  1. C++ 标准文档:vector 规范
  2. EASTL vector 实现
  3. Google Abseil 优化建议

总结

vector 作为 C++ 最核心的容器,其高效使用需要开发者深入理解内存管理机制、掌握现代 C++ 特性,并能根据具体场景选择合适的优化策略。本文从底层实现到高级技巧,结合代码示例和性能数据,为开发者提供了全方位的 vector 使用指南。建议结合具体项目需求,灵活运用文中提到的各种优化方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/72250.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

S7-1200 G2移植旧版本S7-1200程序的具体方法示例

S7-1200 G2移植旧版本S7-1200程序的具体方法示例 前期概要: S7-1200 G2必须基于TIA博途V20,之前的程序可通过移植的方式在新硬件上使用。 该移植工具可自动将TIA Portal 项目从 S7-1200 移植到更新的S7-1200 G2。 注意: 该插件支持在同一TIA Portal项目实例内将软件和/或硬…

CNN SSP, ASPP, PPM 分割任务经典尺度聚合模块

SSP&#xff1a;Spatial Pyramid Pooling 让任意大小图像最终输出的特征维度始终固定&#xff0c;便于接全链接层。 4x4, 2x2,1x1区域的maxpooling&#xff0c;让任意大小图像最终输出最终特征维度始终为 &#xff08;1641)*256 ASSP:Atrous Spatial Pyramid Pooling 不进行…

OpenHarmony-XTS测试

OpenHarmony-XTS测试 OpenHarmony-XTS测试环境搭建测试准备开始运行PS OpenHarmony-XTS测试 针对OpenHarmony版本进行XTS测试使用记录。 windows环境。 以acts套件为例。 环境搭建 获取测试套件&#xff0c;两种方法 1&#xff09;官网下载&#xff1a;https://www.openharm…

文件系统 linux ─── 第19课

前面博客讲解的是内存级文件管理,接下来介绍磁盘级文件管理 文件系统分为两部分 内存级文件系统 : OS加载进程 ,进程打开文件, OS为文件创建struct file 和文件描述符表 ,将进程与打开的文件相连, struct file 内还函数有指针表, 屏蔽了底层操作的差异,struct file中还有内核级…

【软考-架构】5.2、传输介质-通信方式-IP地址-子网划分

✨资料&文章更新✨ GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目录 传输介质网线光纤无线信道 通信方式和交换方式会考&#xff1a;交换方式 &#x1f4af;考试真题第一题第二题 IP地址表示子网划分&#x1f4af;考试真题第一题第二题 传输…

G2o顶点与边编程总结

G2o的顶点与边属于 HyperGraph 抽象类的继承OptimizableGraph 的继承。 BaseVertex<D,T> D是预测点的维度&#xff08;在流形空间的最小表示&#xff09;T是待估计vertex的数据类型&#xff0c;比如用四元数表达三维旋转的话&#xff0c;T就是Quaternion 类型 // 顶点的…

凸优化算法学习笔记:决策单调性与 wqs二分

文章目录 前言决策单调性单调矩阵&#xff0c;完全单调矩阵&#xff0c;蒙日阵决策单调性优化 d p dp dp线性 d p dp dp分治&#xff08;离线&#xff09;二分队列&#xff08;在线&#xff09;SMAWK 区间 d p dp dp 练习题LOJ6039 w q s wqs wqs 二分&#xff08;蒙日阵最短…

Aop实现简单基于日志记录

目录 一、基础知识&#xff1a; 二、测试记录接口的参数和结果 一、基础知识&#xff1a; Before&#xff1a;用于执行目标方法之前的逻辑。After&#xff1a;用于执行目标方法之后的逻辑。AfterReturning&#xff1a;用于获取目标方法返回值后的逻辑。AfterThrowing&#x…

【Nacos】服务发布之优雅预热上线方案

目录 一、背景二、注册时机2.1、注册机制2.2、分析源码找到注册时机 三、注册前心跳健康检测3.1、方案实施3.2、源码分析3.3、优化代码 四、流量权重配置五、总结5.1、整体完整流程&#xff1a;5.2、流程图&#xff1a;5.1、优化方案完整代码&#xff1a; 一、背景 有些面向广…

AI驱动的数字供应链安全情报预警服务:云脉XSBOM

先发制人&#xff0c;精准预警数字供应链中的安全风险 Pre-emptive Strategy, Accurate Warning of Security Risks in Digital Supply Chain 云脉XSBOM数字供应链安全情报预警依托悬镜安全团队强大的供应链管理监测能力和AI安全大数据云端分析能力&#xff0c;对全球数字供应…

算法系列之回溯算法求解数独及所有可能解

有没有对数独感兴趣的朋友呢&#xff1f;数独作为一款经典的逻辑游戏&#xff0c;其目标是在一个9x9的方格中填入数字1至9&#xff0c;确保每一行、每一列以及每一个3x3的子网格中都包含这些数字且不重复。尽管数独的规则看似简单&#xff0c;但编写一个能够自动求解数独的程序…

C++ primer plus 类和对象上

目录 前言 一 接口的设计 二 方法的设计和使用 三 构造函数 四 析构函数 五 析构函数和构造函数小结 总结 前言 前面已经描述了很多有关于类和对象的知识了&#xff0c;所以我们直接开始上手操作 一 接口的设计 首先我们要知道什么是接口 接口是一个共享框架&…

AdaLoRA 参数 配置:CAUSAL_LM“ 表示因果语言模型任务

AdaLoRA 参数 配置:CAUSAL_LM" 表示因果语言模型任务 config = AdaLoraConfig( init_r=16, # 增加 LoRA 矩阵的初始秩 lora_alpha=32, target_modules=[“q_proj”, “v_proj”], lora_dropout=0.1, bias=“none”, task_type=“CAUSAL_LM” ) 整体功能概述 AdaLoraCon…

C# 集合

集合 概述集合接口和类型列表(ArrayList, List)队列(Queue)栈(Statck)链表(LinkedList)有序表(SortedList)字典Lookup类其他字典类 HashSet(不重复项的无序列表)位数组BitArrayBitVector32 性能 概述 数组和Array类。数组的大小是固定的。如果元素个数是动态的&#xff0c;就应…

ELK(Elasticsearch、Logstash、Kbana)安装及Spring应用

Elasticsearch安装及Spring应用 一、引言二、基本概念1.索引&#xff08;Index&#xff09;2.类型&#xff08;Type&#xff09;3.文档&#xff08;Document&#xff09;4.分片&#xff08;Shard&#xff09;5.副本&#xff08;Replica&#xff09; 二、ELK搭建1.创建挂载的文件…

MacOS 15.3.1 安装 GPG 提示Error: unknown or unsupported macOS version: :dunno

目录 1. 问题锁定 2. 更新 Homebrew 3. 切换到新的 Homebrew 源 4. 安装 GPG 5. 检查 macOS 版本兼容性 6. 使用 MacPorts 或其他包管理器 7. 创建密钥&#xff08;生成 GPG 签名&#xff09; 往期推荐 1. 问题锁定 通常是因为你的 Homebrew 版本较旧&#xff0c;或者你…

C++:类和对象(从底层编译开始)详解[前篇]

目录 一.inline内联的详细介绍 &#xff08;1&#xff09;为什么在调用内联函数时不需要建立栈帧&#xff1a; &#xff08;2&#xff09;为什么inline声明和定义分离到两个文件会产生链接错误&#xff0c;链接是什么&#xff0c;为什么没有函数地址&#xff1a; 二.类&…

四种 No-SQL

在一个常规的互联网服务中&#xff0c;读取与写入的比例大约是 100:1 到 1000:1。然而&#xff0c;从硬盘读取时&#xff0c;数据库连接操作耗时&#xff0c;99% 的时间花费在磁盘寻址上。 为了优化读取性能&#xff0c;非规范化的设计通过添加冗余数据或分组数据来引入。下述…

【 Manus平替开源项目】

文章目录 Manus平替开源项目1 OpenManus1.1 简介1.2 安装教程1.3 运行 2 OWL2.1 简介2.2 安装教程2.3 运行 3 OpenHands&#xff08;原OpenDevin&#xff09;3.1 简介3.2 安装教程和运行 Manus平替开源项目 1 OpenManus 1.1 简介 开发团队: MetaGPT 核心贡献者&#xff08;5…

【Linux 服务之ollama 部署过慢问题】

特别慢的 curl -fsSL https://ollama.com/install.sh | sh参考 方法1 export OLLAMA_MIRROR"https://ghproxy.cn/https://github.com/ollama/ollama/releases/latest/download" curl -fsSL https://ollama.com/install.sh | sed "s|https://ollama.com/downl…