- 博客(158)
- 收藏
- 关注
原创 死锁与锁的高级话题
死锁与锁的高级机制摘要 核心要点 死锁四条件: 互斥(无法破坏) 持有并等待(破坏方法:std::lock一次性申请) 不可剥夺(破坏方法:try_lock+回退) 循环等待(破坏方法:固定锁顺序) 锁类型对比: 读写锁:适合读多写少场景(如缓存),读操作可并发 自旋锁:适合超短临界区(微秒级),避免上下文切换 互斥锁:通用场景,保证公平性但开销较大 同步机制: 禁止用sleep代替同步(无内存屏障和锁释放) C++17的scoped_lock结合了std::lock的防死锁能力和RAII安全性 std::
2026-07-08 14:50:06
345
原创 原子操作与内存序
C++原子操作与内存序摘要 C++的std::atomic提供无锁线程安全操作,比互斥锁更轻量。核心操作包括原子读写、CAS和算术运算。CAS(Compare-And-Swap)是关键的读-改-写原语,有weak/strong两种形式,需注意ABA问题。内存序(memory_order)控制操作顺序:relaxed只保证原子性;acquire/release建立线程间happens-before关系;seq_cst(默认)保证全局顺序一致性但开销最大。合理选择内存序对无锁编程至关重要,需平衡性能与正确性。
2026-07-08 14:49:23
378
原创 虚函数与运行时多态
本文深入探讨C++虚函数与运行时多态机制,主要内容包括: 静态绑定与动态绑定:静态绑定在编译期确定调用目标,动态绑定通过虚函数表在运行时确定 虚函数表(vtable)机制:详细分析vptr/vtable的内存布局和虚函数调用过程 构造函数与虚函数:解释构造函数不能声明为虚函数的原因及虚析构函数的必要性 RTTI原理:阐述typeid和dynamic_cast的底层实现机制 override与final关键字:说明其语法作用及对编译器优化的影响 文章通过代码示例和内存图示,全面剖析了C++多态的实现原理和关键
2026-07-07 20:12:00
17
原创 C++ 对象模型
C++对象模型核心概念摘要: 空类大小为1字节,确保实例地址唯一性 结构体内存对齐规则:成员地址需满足自然对齐,编译器自动插入padding,成员顺序影响总大小 继承内存布局: 单继承:基类成员在前,派生类追加 多继承:按声明顺序排列基类子对象 虚继承:通过虚基类指针解决菱形继承问题 成员函数指针大小可变(8或16字节),存储函数地址或vtable索引,多继承时需保存this调整偏移 (98字)
2026-07-07 20:11:56
121
原创 性能优化实战
性能优化实战摘要 本文介绍了6个关键的性能优化技术点:1) CPU缓存局部性原理解释了vector比list遍历快的原因;2) 多线程中的false sharing问题及缓存行对齐解决方案;3) 结构体成员顺序优化以减少内存padding;4) SIMD指令集(SSE/AVX)实现并行计算;5) 性能分析工具链(perf/VTune/火焰图)的使用方法;6) 虚函数调用开销分析。文章通过代码示例、mermaid图表和对比实验,展示了从缓存利用、内存布局到并行计算等多个维度的优化技巧,并提供了量化分析工具的使
2026-07-07 20:11:00
116
原创 CMake 与工程化
摘要:CMake与工程化实践 本文围绕CMake工程化实践展开,涵盖以下核心内容: 静态库与动态库:对比两者的存储、内存占用和部署特性,提供不同场景下的选型建议(小工具用静态库,大型系统用动态库) Modern CMake:强调以target为中心的属性传递机制,详解PUBLIC/PRIVATE/INTERFACE三种依赖传播方式及适用场景 包管理工具:对比vcpkg和Conan的特性,vcpkg适合Windows和简单项目,Conan支持复杂配置和私有包分发 单元测试:展示Google Test与CMak
2026-07-07 20:10:18
63
原创 C++11/14/17/20/23 新特性全景
本文系统梳理了 C++11 至 C++23 各版本的核心新特性,采用"特性引出→原理分析→代码示例"的三段式讲解方式。主要内容包括:C++11 的 auto/decltype、lambda、右值引用、智能指针等基础现代化特性;C++14 对泛型编程的完善;C++17 在编译期编程和零成本抽象方面的增强;C++20 的重要概念如协程、模块、三路比较等;以及 C++23 对标准库的现代化改进。文章通过清晰的代码示例和面试题解析,帮助开发者掌握现代 C++ 的关键特性演进脉络。
2026-07-07 20:09:20
153
原创 智能指针深度
智能指针深度解析摘要 本文深入探讨了C++智能指针的核心机制与实现原理。主要内容包括: unique_ptr:零开销的独占所有权指针,通过EBO优化保持与裸指针相同大小,禁止拷贝仅支持移动语义。 shared_ptr控制块:采用双指针结构(对象指针+控制块指针),控制块包含引用计数、删除器等元数据,并详细分析了引用计数规则。 weak_ptr:通过weak_count解决循环引用问题,介绍了lock()等关键API的线程安全实现。 make_shared优化:对比了make_shared与直接new的性能差
2026-07-07 20:08:12
250
原创 进程与 IPC
文章摘要 本文介绍了Linux进程管理与进程间通信(IPC)的核心概念: fork/exec与写时拷贝:fork()创建子进程时采用写时拷贝(COW)技术,父子进程共享内存页直到写入操作触发缺页中断。exec系列函数替换当前进程内存空间。 孤儿与僵尸进程:孤儿进程由init进程收养;僵尸进程因父进程未调用wait而残留。防止僵尸的三种方法:同步wait、SIGCHLD信号处理或忽略SIGCHLD信号。 IPC方式对比:总结了管道、消息队列、共享内存等7种IPC机制的特点及适用场景。 共享内存实现:比较了sh
2026-07-07 20:07:00
280
原创 Reactor 与网络架构
Reactor模式与网络架构摘要 Reactor是一种事件驱动模式,核心原理是将IO事件检测与事件处理解耦,通过多路复用器(epoll/kqueue)高效管理连接。主要包含三个组件:事件处理器(EventHandler)、反应器(Reactor)和同步事件分离器(epoll_wait)。 单线程Reactor将所有操作集中在一个线程,虽然简单但容易因业务阻塞影响整体性能。改进方案包括: 多线程Reactor:主线程处理IO,业务逻辑交给线程池,适合计算密集型场景; 主从Reactor:Main Reacto
2026-07-07 20:06:46
321
原创 网络编程:select/poll/epoll
本文摘要:文章详细对比了阻塞IO、非阻塞IO和IO多路复用的区别,重点分析了select、poll和epoll三种IO多路复用机制。select通过fd_set实现但存在数量限制和性能问题;poll改用pollfd数组解决了数量限制但仍需全量拷贝和遍历;epoll通过红黑树和就绪链表实现O(1)高效管理,支持LT和ET两种触发模式。文章还探讨了epoll的惊群问题及解决方案,最后通过表格对比了三者的关键差异,指出epoll在高并发场景下的性能优势。
2026-07-07 20:06:24
309
原创 线程池与异步编程
本文摘要: C++并发编程核心知识: 线程池通过预创建线程和任务队列解决频繁创建/销毁线程的开销问题,核心参数包括线程数、队列容量和拒绝策略。最佳线程数取决于任务类型(CPU/IO密集型)。 std::async与std::thread对比:async自动管理线程生命周期并返回future,支持异常传递;thread需要手动管理且无法直接获取返回值。async的默认启动策略可能延迟执行,建议显式指定std::launch::async。 future/promise机制:promise是写入端,future
2026-07-07 20:05:55
322
原创 二叉树:遍历与递归思维
文章摘要:本文系统介绍了二叉树及其遍历方法。通过公司组织架构类比解释树结构,定义关键术语如根节点、叶子节点等。重点讲解四种遍历方式(前序、中序、后序、层序),提供递归和迭代的C++实现代码,并配以示意图说明遍历顺序差异。文章强调递归思维在二叉树处理中的核心地位,解释递归三要素,最后简要介绍二叉搜索树的基本操作(查找和插入)。适合需要快速掌握二叉树基础知识的读者阅读。
2026-07-06 13:05:30
237
原创 哈希表:O(1) 查找的秘密
哈希表是一种高效的数据结构,通过哈希函数将键映射到数组下标实现O(1)平均时间复杂度的查找。本文介绍了哈希表的核心原理,包括哈希函数设计(如除留余数法)、冲突解决方法(链地址法和开放地址法)、负载因子与rehash机制,以及C++中std::unordered_map的实现与使用。文章还通过LeetCode两数之和问题展示了哈希表的实际应用,并分析了各种操作的时间复杂度。良好的哈希函数和合理的rehash策略是保证哈希表高效性能的关键。
2026-07-06 13:04:55
526
原创 图基础:DFS 与 BFS
本文介绍了图的基本概念和两种核心遍历算法:深度优先搜索(DFS)和广度优先搜索(BFS)。通过地铁线路图的类比,直观解释了图的节点、边及其分类(有向/无向、有权/无权)。重点对比了邻接矩阵和邻接表两种存储方式的优缺点及适用场景,给出了C++实现代码。详细讲解了DFS的递归和迭代写法,以及BFS的层序遍历实现,特别说明BFS适用于无权图最短路径问题。最后介绍了拓扑排序的两种算法(Kahn入度法和DFS后序法)及其实现。全文以算法实现为核心,配有清晰的代码示例和可视化图示。
2026-07-06 13:04:29
123
原创 堆与优先队列:大小顶堆
本文介绍了堆与优先队列的核心概念与应用,重点包括: 堆的基本特性:大顶堆和小顶堆的定义,堆只维护最值不保证全局有序 存储结构:完全二叉树用数组实现,推导父子节点索引公式 关键操作:上浮(swim)和下沉(sink)的算法实现与时间复杂度分析 高效建堆:Floyd算法的O(n)建堆过程及数学原理 标准库实现:C++的priority_queue用法及自定义比较函数 堆排序:不稳定排序算法,分建堆和反复取堆顶两个阶段 典型应用:第K大元素和前K高频元素问题的堆解法 堆的核心价值在于高效维护动态数据集的最值,时间
2026-07-06 13:03:47
260
原创 字符串匹配与 KMP 算法
本文介绍了字符串匹配中的KMP算法及其优化思想。主要内容包括: 直观类比:通过查字典的例子说明KMP算法利用已匹配信息跳过不可能的位置,避免回溯浪费。 暴力匹配的缺陷:复杂度O(nm),在特定情况下效率极低。 KMP核心思想: 预处理模式串生成next数组(记录最长相等前后缀长度) 匹配时文本指针不回溯,模式指针按next跳转 详细实现: next数组的双指针递推构造方法 完整的C++代码实现及匹配过程图解 复杂度分析:预处理O(m),匹配O(n),总体线性复杂度O(n+m)。 扩展对比:简要比较了KMP与
2026-07-06 13:03:26
129
原创 布隆过滤器与位图
本文介绍了布隆过滤器和位图的基本原理与实现。布隆过滤器是一种概率型数据结构,通过多个哈希函数和位数组实现高效的成员存在性检查,具有空间效率高、查询速度快的特点,但可能存在假阳性。文章从电影院检票的类比入手,解释了位图的基础概念,详细阐述了布隆过滤器的结构、数学原理、不可删除缺陷及其变种Counting Bloom Filter,并提供了C++的简易实现代码。布隆过滤器适用于需要快速判断元素是否存在且可以容忍少量误报的场景。
2026-07-06 13:02:55
294
原创 并查集:连通性问题
本文介绍了并查集(Union-Find)这种数据结构及其优化方法。并查集用于解决元素间的连通性问题,支持两种操作:合并(Union)和查找(Find)。文章从最简单的Quick-Find实现开始,分析了其O(n)时间复杂度的不足,进而引入基于树形结构的Quick-Union方法。针对Quick-Union可能退化为链表的问题,提出了路径压缩和按秩合并两种优化策略,将时间复杂度降低至近常数级(α(n))。文章最后给出了一个结合路径压缩和按秩合并的优化模板代码,并举例说明其在求解岛屿数量问题中的应用。
2026-07-06 13:02:48
486
原创 平衡二叉搜索树:AVL 与红黑树
AVL树与红黑树是两种经典的自平衡二叉搜索树。AVL树通过严格平衡因子(左右子树高度差≤1)保证树高约1.44log₂n,查找效率更高但维护成本较大。红黑树放宽平衡条件,通过颜色规则(无连续红节点、黑高相同)确保树高≤2log₂(n+1),虽然查找稍慢但插入/删除操作更高效。AVL适合读密集型场景,红黑树凭借更少的旋转操作成为C++ STL中map/set等容器的实现基础,在需要稳定迭代器的场景表现更优。两者各有侧重,实际选择需权衡查询与更新操作的频率需求。
2026-07-06 13:02:04
316
原创 最短路径与最小生成树
本文介绍了图论中最短路径和最小生成树的核心算法: Dijkstra算法 - 单源非负权最短路径,采用贪心策略和优先队列优化,时间复杂度O(E log V) Bellman-Ford算法 - 单源可处理负权的最短路径,能检测负权环,时间复杂度O(VE) Floyd-Warshall算法 - 全源最短路径,采用动态规划思想,时间复杂度O(V³) Prim算法 - 最小生成树,与Dijkstra结构类似,但dist数组定义不同,表示到已选集合的最短边长度 这些算法在实际中有广泛应用,如导航路径规划、网络布线优化等
2026-07-06 13:01:14
451
原创 数组:最基础的连续内存结构
文章摘要: 数组是连续内存结构,支持O(1)随机访问,类比电影院座位系统。其核心优势在于: 通过起始地址和下标直接计算元素位置 良好的缓存局部性,遍历效率高 动态数组(如std::vector)通过扩容策略实现可变大小 缺点是插入/删除中间元素需要O(n)时间移动数据。典型应用包括: 高频随机访问场景 需要空间局部性的算法 作为更复杂数据结构的基础组件
2026-07-06 13:01:04
352
原创 编译链接全过程
文章摘要:C++代码编译链接全过程详解 本文详细讲解了C++程序从源代码到可执行文件的完整编译链接过程,包含四个关键阶段: 预处理阶段:处理宏定义、头文件包含和条件编译,生成纯C++代码(.i文件) 编译阶段:通过词法分析、语法分析、语义分析、中间代码生成和优化,最终输出汇编代码(.s文件) 汇编阶段:将汇编代码转换为二进制目标文件(.o文件),包含机器指令和符号表 链接阶段:合并多个目标文件,解析外部引用,生成最终可执行文件 文章使用示例代码和图表说明每个阶段的具体工作,并介绍了查看中间产物的方法,帮助开
2026-07-05 11:31:53
29
原创 模板基础与 SFINAE
文章摘要: 本文介绍了C++模板编程的核心概念,包括函数模板与类模板的关键区别(参数推导机制、CTAD特性)、模板特化与偏特化的应用场景(全特化提供具体类型实现,类模板支持偏特化而函数模板需用重载替代)。重点解析了SFINAE原则(替换失败非错误)及其实践方法(enable_if、void_t检测惯用法),并通过流程图展示编译器处理重载集的决策过程。最后讲解了变参模板的两种展开方式(递归展开和C++17折叠表达式),展示了如何实现类型安全的可变参数处理。这些技术构成了现代C++模板元编程的基础。
2026-07-05 11:31:13
155
原创 左值右值与移动语义
本文总结了C++中左值右值与移动语义的关键知识点:左值可寻址而右值不可;std::move仅进行类型转换不产生运行时代码;引用折叠规则决定引用类型的最终形式;std::forward实现完美转发;emplace_back直接在容器内存构造对象避免额外拷贝/移动操作。重点内容包括移动构造需标记noexcept以保证容器操作效率,以及万能引用与右值引用的区别。
2026-07-05 11:30:44
124
原创 类型转换四兄弟
C++类型转换四兄弟:安全转型的利器 C++提供了四种类型转换操作符(static_cast、dynamic_cast、const_cast、reinterpret_cast)来替代C风格转型。它们解决了C风格转型的三个主要问题:缺乏安全性检查、功能过于宽泛和不可搜索性。 static_cast用于相关类型间的转换,编译期检查类型关系但不保证运行时安全;dynamic_cast通过RTTI在运行时检查继承关系,确保向下转型的安全性;const_cast专门用于添加或移除const/volatile限定;re
2026-07-05 11:30:11
123
原创 const 全面梳理
本文全面梳理了C++中const关键字的用法,核心内容包括: 指针const:区分顶层const(指针本身不可变)和底层const(指向的值不可变),记忆口诀是"const在*左边是底层,右边是顶层"。 const成员函数:将this指针变为const,不能修改非mutable成员。mutable用于标记不影响对象逻辑状态的成员(如缓存、互斥锁等)。 constexpr:从C++11到C++20的演进,支持编译期求值、循环、分支等特性,与const的关键区别是必须编译期初始化。 C++20新特性:const
2026-07-05 11:30:05
178
原创 编排模式:中央协调 + 子任务分配
摘要: 编排模式(Orchestration Pattern)采用中央协调Agent作为控制核心,负责接收任务请求、分解为子任务、分配给专业子Agent执行并聚合结果。该模式采用星形通信拓扑,子Agent间无直接交互。核心流程包括任务分解、分配、执行和聚合四个阶段,需处理依赖关系、并行执行和异常情况。设计原则强调协调Agent专注调度、子Agent隔离、健壮聚合和合理分解粒度。通过Python示例展示了简化实现,包括任务分解、异步执行和结果聚合等关键步骤。该模式适合复杂任务的高效协同处理,但需注意协调Age
2026-07-05 11:25:16
284
原创 路由模式:智能分发 + 垂直 Agent
文章摘要: 路由模式通过智能分发将用户请求路由至最适合的垂直Agent,提升任务处理效率。其核心组件包括路由层(决策引擎)、垂直Agent(专业领域处理)和兜底策略。路由层支持三种实现方式:基于规则(低成本、低延迟,适合明确分类)、基于Embedding(语义相似度匹配)和基于LLM Judge(复杂语义理解)。关键设计需平衡分类精度与兜底策略,确保异常场景的降级处理。该模式适用于多场景Agent系统,类似微服务架构的API网关,需关注请求分析、参数转换和结果汇聚等职责。代码示例展示了不同路由器的实现逻辑。
2026-07-05 11:22:33
257
原创 LRU Cache:面试必考设计题
本文介绍了LRU(Least Recently Used)缓存淘汰策略及其实现方法: 通过手机后台应用列表类比LRU原理:最近使用的数据保留,最久未使用的淘汰。 数据结构选择采用哈希表+双向链表组合,实现O(1)时间复杂度的查找和插入/删除操作。 提供两种C++实现方案: 使用STL的list和unordered_map快速实现 手写双向链表实现(更受面试官青睐) 比较了LRU与LFU(Least Frequently Used)策略的区别: LRU基于最近访问时间 LFU基于访问频率 分析各自的优缺点和适
2026-07-05 11:22:32
333
原创 投票模式:多数决 + 加权 + 辩论
本文介绍了多Agent系统中的投票共识机制,主要包括多数决、加权投票和辩论投票三种模式。投票机制的有效性基于多数决定理,即当每个投票者正确率超过50%时,集体决策准确率会随参与者增加而提升。文章提出了五项架构设计原则:确保Agent独立性、动态更新权重、设置辩论终止条件、根据答案空间选择投票方式、权衡成本收益。同时指出投票机制不适用于实时性要求高、任务简单或Agent独立性无法保证的场景。最后提供了Python实现的加权投票和辩论投票代码示例。
2026-07-05 11:22:26
338
原创 Trie 字典树:前缀匹配利器
本文介绍了字典树(Trie)数据结构及其实现。Trie是一种多叉树结构,每个节点代表一个字符,从根到叶子的路径构成完整单词,具有高效的前缀匹配特性。文章通过词典查找类比直观展示了Trie的工作原理,详细解析了插入、搜索和前缀搜索三个核心操作的时间复杂度均为O(L)(L为单词长度)。提供了两种实现方式:定长数组(适合ASCII小字符集)和哈希表(适合Unicode或稀疏场景)。最后给出了C++完整模板实现,并指出Trie在解决LeetCode 212等实际问题时的应用优势,特别适合需要前缀匹配或同时搜索多个单
2026-07-05 11:22:16
369
原创 CrewAI 工具集成与自定义工具
CrewAI工具集成与自定义工具指南摘要(147字) CrewAI工具是Agent执行任务时调用的功能单元,提供两种创建方式:@tool装饰器适合简单工具,BaseTool子类化支持复杂场景。工具分为搜索、代码、文件、RAG四类,通过精确的description字段指导LLM选择。执行流程包含参数序列化、缓存检查(可定制缓存策略)和错误处理。设计原则强调单一职责、语义化错误信息和合理的工具粒度。工具可包装LangChain工具实现互操作,缓存机制提升效率但需注意写操作的幂等性。
2026-07-04 14:07:20
328
原创 层级模式:Manager → Worker 树状结构
摘要: 层级模式是一种将Agent组织成树状结构的协作方式,包含Manager(任务拆解/结果聚合)和Worker(执行子任务)两类角色。其核心机制是"分解-分配-聚合"循环:Manager将任务递归拆解并分配给Worker,最终合并结果。设计时需遵循6个原则:1)控制单个Manager下属Worker数量(3-7个);2)Worker保持无状态;3)结果冲突消解;4)层级深度≤3;5)统一通信协议;6)设置任务超时机制。该模式适合复杂任务分解,但需注意Manager可能成为性能瓶颈。典型实现包括AutoG
2026-07-04 14:06:59
370
原创 CrewAI 生产化:缓存、回调、LLM 配置
本文摘要:CrewAI生产化配置关注三个核心维度:缓存机制通过输入哈希实现工具调用缓存,提升重复查询效率;回调函数提供事件钩子用于日志和监控;LLM配置支持Agent级别模型定制。缓存默认开启,通过哈希键共享结果;回调应轻量异步避免阻塞;LLM按任务特性分配不同模型。架构原则包括:区分场景配置缓存策略、回调函数轻量化、LLM分层配置,并建议始终启用缓存、异步处理回调任务、按需分配模型资源以优化生产环境性能。
2026-07-04 14:06:48
383
原创 LangChain LCEL 核心模式与组合
本文介绍了LangChain的LCEL(LangChain Expression Language)核心模式与组合方式。主要内容包括:1)核心组件如Runnable、RunnableSequence等的作用和类比;2)各组件的基本方法如invoke、batch等;3)代码示例展示从Prompt到完整Chain的构建过程;4)底层原理包括Runnable协议架构、执行模型和流式处理机制;5)五大架构设计原则:组合优于继承、独立可测试性、类型安全优先、配置透传和延迟执行。这些设计使得LCEL具有高度模块化和灵活
2026-07-04 14:06:10
222
原创 tech-batch 写审分离:AI 批量写技术博文的质量控制
本文介绍了tech-batch技术博文批量生产系统,其核心采用"写审分离"模式确保内容质量。系统特点包括:1)独立盲审机制,每次审查都是全新判断;2)串行处理,前一篇通过才进入下一篇;3)五维客观审查标准(字数、结构、图表、代码、风格);4)无限修改循环直至达标。系统通过进度文件实现断点续传,并已在10篇AI Agent系列文章中得到验证,平均每篇1.8轮修改,发布后无质量问题回溯。这种设计解决了传统写作中自我审查的盲区问题,实现了稳定的技术内容输出质量。
2026-07-04 14:06:03
203
原创 C++ STL之filesystem文件系统库详解
本文详细介绍了C++17标准库中的filesystem文件系统功能。主要内容包括:filesystem从Boost库到标准库的发展历程;核心path类的路径表示和规范化操作;directory_entry的缓存机制提升性能;两种目录遍历迭代器(directory_iterator和recursive_directory_iterator)的使用方法;磁盘容量查询接口space_info;以及文件复制操作copy及其选项配置。文章通过代码示例和流程图展示了这些功能在跨平台文件操作中的实际应用,帮助开发者理解如
2026-07-03 07:53:23
319
原创 C++ STL 之 string_view 详解
本文详细介绍了C++17引入的string_view特性,它解决了字符串参数传递时的隐式构造和拷贝开销问题。作为非拥有型的字符串视图,string_view只保存指针和长度,构造和拷贝均为O(1)复杂度。文章比较了string_view与const string&的使用场景,强调函数形参应优先使用string_view,但需注意其不管理生命周期可能导致的悬垂指针问题。同时提供了常用接口说明、C++20新增功能、安全使用原则以及6道典型面试题解析,最后总结了两种方式的特性对比和使用建议。
2026-07-03 07:53:18
305
原创 C++ STL之deque详解:从使用到底层,再到面试八股
摘要:C++ STL deque详解 deque是一种双端队列容器,支持高效的两端操作(O(1))。它采用分段连续存储结构,由多个固定大小的内存块和中控指针数组组成,既不是完全连续也不是完全离散。特性包括: 支持快速随机访问(两步寻址) 两端插入/删除高效 中间操作较慢(O(n)) 相比vector没有capacity概念 提供完整迭代器支持(包括随机访问) 典型应用场景:需要频繁两端操作的队列/栈 面试要点:强调其分段连续的结构设计,解释为何两端操作高效而中间操作较慢,以及与vector/list的主要区
2026-07-03 07:53:10
371
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅