- 博客(69)
- 收藏
- 关注
原创 C++ STL 迭代器详解
本文详细介绍了C++ STL中的迭代器机制,包括迭代器分类、基本操作、适配器类型及其与算法的配合使用。主要内容涵盖:输入/输出/前向/双向/随机访问迭代器的特性;常用迭代器操作方法;插入迭代器、流迭代器等适配器的应用;迭代器在算法中的典型用法;迭代器失效问题及自定义迭代器实现。文章通过代码示例展示了迭代器的核心功能,并提供了性能优化建议,是理解和使用STL迭代器的全面指南。
2026-02-23 19:06:31
426
4
原创 C++ STL算法——数值算法
C++ STL数值算法解析与应用 摘要:C++ STL提供了一套高效的数值算法,包括accumulate、partial_sum、inner_product和adjacent_difference等核心算法。这些模板化工具支持类型安全的数学运算,具有O(N)时间复杂度和常数空间复杂度,适用于统计分析、金融建模和信号处理等领域。accumulate实现归约操作,partial_sum生成前缀和序列,inner_product计算向量点积,adjacent_difference分析相邻元素差值。通过自定义操作符
2026-02-21 22:12:10
722
原创 C++ STL算法——排序和相关操作
本文深入探讨了C++ STL中的排序及相关操作算法,包括核心概念、算法家族、实现细节和实战应用。主要内容涵盖: 排序本质与关键术语(稳定/不稳定排序、原地操作等) 核心算法对比表(sort、stable_sort、partial_sort等的时间/空间复杂度及应用场景) 重点算法详解:std::sort(混合排序)、std::stable_sort(稳定排序)、std::partial_sort(Top K)、std::nth_element(分割点查找)和堆操作 实战技巧:算法选择指南、自定义比较器注意事
2026-02-21 20:25:50
827
原创 2026春晚魔术揭秘——变魔法为物理
2026年春晚魔术揭秘:物理机关与数学算法的完美结合。咖啡杯把手穿戒指运用特制杯具滑轨和视觉障眼法,戒指并未真正穿过项链而是巧妙"假穿"。计算器预言时间则通过预设数学公式(A+B+C=2162227)实现,观众"盲按"实为程序控制的固定数字。该魔术创意并非独家,此前已在多档节目出现,AI揭秘引发科技与魔术边界讨论。这场表演展示了精密工程与心理暗示的结合,意外互动反而成就了独特记忆点,印证了"不完美的意外才是魔术的灵魂"这一理念。
2026-02-17 10:49:02
686
原创 C++ STL算法——修改序列算法
C++ STL中的修改序列算法是一组直接改变容器元素内容或顺序的高效工具。这些算法可分为拷贝移动类(如copy/move)、填充生成类(如fill/generate)、替换转换类(如replace/transform)、移除去重类(如remove/unique)、反转旋转类(如reverse/rotate)以及排序分区类(如sort/partition)。使用时需注意迭代器失效问题,优先选择标准库算法而非手写循环,并理解不同算法的边界行为和异常安全性。合理运用这些算法能显著提升代码效率和可维护性,建议遵循明
2026-02-13 17:59:14
720
原创 C++ STL算法——非修改序列算法
摘要:C++ STL中的非修改序列算法是一组只读操作工具,不会改变容器元素。主要包括查找类(find/find_if)、统计类(count/count_if)、遍历类(for_each)和比较类(equal/all_of)等算法。这些算法通用性强,适用于各种支持迭代器的容器,时间复杂度多为O(N)。使用时需注意迭代器有效性、性能优化和谓词函数设计。掌握这些算法能提升代码质量和开发效率,适合需要保留原始数据的查询、统计和比较场景。(150字)
2026-02-13 17:54:21
1039
原创 C++中的priority_queue容器详解
C++中的priority_queue是STL提供的优先级队列容器适配器,基于堆数据结构实现,默认最大堆(最大元素优先)。它提供高效的$O(\log n)$插入/删除操作和$O(1)$访问顶部元素。通过底层容器(默认vector)和比较函数(默认less)可灵活配置,支持自定义排序逻辑。典型应用包括任务调度、K个最大/最小元素查找等。使用时需注意空队列检查和性能特点,适合需要频繁访问最高优先级元素的场景。
2026-02-12 21:30:23
735
原创 C++中的queue容器详解
C++中的queue是STL提供的先进先出(FIFO)容器适配器,基于deque或list实现。它提供push()、pop()等高效操作,仅允许访问队首和队尾元素。本文详细介绍了queue的基本特性、构造函数、容量操作、元素访问方法以及修改操作,并包含实际应用示例和性能分析。queue适用于需要FIFO结构的场景,如广度优先搜索算法,但不支持遍历且不能基于vector实现。使用时需注意检查队列是否为空,避免未定义行为。
2026-02-12 21:29:37
459
原创 C++中的stack容器详解
C++ STL中的stack是一个容器适配器,提供后进先出(LIFO)数据结构。它基于deque、list或vector等底层容器实现,默认使用deque。主要操作包括push()/emplace()压栈、pop()弹栈和top()访问栈顶元素,时间复杂度均为O(1)。stack不支持迭代器,仅允许访问栈顶元素。实际应用中常用于括号匹配、表达式求值等场景。使用时需注意调用top()或pop()前检查栈是否为空,并根据性能需求选择合适的底层容器实现。
2026-02-10 21:59:03
494
原创 C++中的unordered_multimap容器详解
本文详细介绍了C++中的unordered_multimap容器,这是一种基于哈希表实现的关联容器,允许存储重复键的键值对。文章首先概述了其基本特性,包括哈希表实现、允许重复键、无序存储和快速访问等。然后详细讲解了其构造函数、初始化方法、容量操作、元素访问方式以及修改操作(如插入、删除、交换等)。此外,还介绍了查找操作、桶操作和哈希策略等高级功能,并提供了完整的代码示例,展示了如何创建、初始化、查找和遍历unordered_multimap容器。
2026-02-10 21:36:50
409
原创 C++中的unordered_map容器详解
本文详细介绍了C++中的unordered_map容器,包括其基本特性、哈希表实现原理和常用操作。主要内容涵盖:1) 容器概述与头文件引入;2) 多种构造函数和初始化方式;3) 容量查询和元素访问方法;4) 插入、删除等修改操作;5) 查找功能实现;6) 桶操作和哈希策略管理。文章通过代码示例展示了unordered_map的典型用法,如插入键值对(insert/emplace)、访问元素(operator[]/at)、迭代遍历等操作,并说明了如何自定义哈希函数和比较器。最后还介绍了负载因子调节和哈希表优化
2026-02-09 21:21:30
495
原创 C++中的unordered_multiset容器详解
C++ unordered_multiset容器摘要 unordered_multiset是C++11引入的基于哈希表的关联容器,允许存储重复元素并提供快速操作(平均O(1)时间复杂度)。该容器具有无序存储、动态大小等特点,支持多种初始化方式(默认构造、范围构造、拷贝构造等)。核心功能包括元素插入(insert/emplace)、删除(erase/clear)、查找(find/count/equal_range)以及桶操作(bucket_count/bucket_size)。此外,还提供哈希策略控制(loa
2026-02-09 21:19:44
374
原创 C++中的unordered_set容器详解
本文详细介绍了C++中的unordered_set容器,这是一种基于哈希表实现的关联容器,具有快速查找、插入和删除的特性。文章涵盖了其基本特性、构造方法、容量操作、元素访问、修改操作、查找操作、桶操作以及哈希策略等核心功能,并提供了完整的代码示例。与set相比,unordered_set提供更快的平均访问速度但元素无序存储。文章还包含性能优化建议和与set的对比分析,帮助开发者根据需求选择合适的容器类型。
2026-02-01 12:09:03
637
原创 C++中的multimap容器详解
本文详细介绍了C++ STL中的multimap容器,主要内容包括: multimap是允许重复键的关联容器,基于红黑树实现,自动按键排序 提供了多种构造方法和初始化方式 常用操作包括插入(insert/emplace)、删除(erase)、查找(find/count)等 支持范围查找(lower_bound/upper_bound/equal_range) 具有$O(\log n)$时间复杂度的查找、插入和删除操作 适合需要按键自动排序且允许重复键的场景 文章最后给出了一个完整示例,展示了multimap
2026-02-01 12:08:04
379
原创 C++中的map容器详解
本文详细介绍了C++ STL中的map容器,它是一种基于红黑树实现的键值对关联容器。文章涵盖了map的基本特性、构造函数、容量操作、元素访问、修改操作和查找方法,包括insert()、emplace()、find()等常用函数。还提供了完整的使用示例和自定义比较函数的方法,并给出了性能优化建议。map自动按key排序并提供高效的查找(O(log n)),适合需要有序键值对的场景。
2026-01-16 20:58:54
530
原创 C++中的multiset容器详解
摘要:C++ STL中的multiset是一种允许重复元素的关联容器,基于红黑树实现,自动排序并提供高效操作。本文详细介绍了其特性、构造函数、容量操作、元素访问、修改操作和查找方法。multiset支持$O(\log n)$的插入、删除和查找,适合需要排序且允许重复的场景。文章包含完整示例代码,展示了初始化、遍历、查找和删除等操作,并提供了性能优化建议,是使用multiset的全面指南。
2026-01-16 20:56:19
533
原创 C++中的set容器详解
C++ STL中的set容器是基于红黑树实现的关联容器,具有元素唯一性和自动排序特性。它提供高效的$O(\log_2 n)$查找、插入和删除操作。本文详细介绍了set的常用操作,包括构造初始化、容量查询、元素修改、查找遍历等方法,并提供了自定义排序规则的示例和性能优化建议。set适用于需要快速查找且元素唯一的场景,是C++中常用的有序容器之一。
2026-01-10 21:13:05
433
原创 C++中的array容器详解
C++中的array容器是C++11引入的固定大小数组容器,兼具原生数组的高效性和STL容器的安全性。它提供连续存储、随机访问、边界检查(at())和STL兼容接口。array在栈上分配内存,大小编译时确定,支持多种初始化方式。主要操作包括元素访问([], at(), front(), back())、容量查询(size(), empty())和修改(fill(), swap())。相比原生数组,array更安全(不会退化为指针)且功能更丰富(支持迭代器和STL算法),适合已知大小的固定集合场景。
2026-01-10 21:11:41
527
原创 C++中的forward_list容器详解
C++中的forward_list是一个单向链表容器,相比list更节省空间但仅支持单向遍历。它具有高效的插入/删除操作($O(1)$),但不支持随机访问和size()操作。主要特点包括:使用push_front()/pop_front()进行头插头删,通过insert_after()/erase_after()在指定位置操作,提供remove()、sort()、merge()等特殊操作。由于每个节点只保存一个指针,内存开销比list更小,适合只需要单向遍历且对内存敏感的场合。
2025-12-27 22:07:54
295
原创 C++中的list容器详解
C++中的list是STL提供的双向链表容器,具有高效的插入和删除操作(O(1)时间复杂度)。它不支持随机访问,但支持双向遍历。主要特性包括:支持头尾操作(push_front/back、pop_front/back)、任意位置插入删除(insert/erase)、特殊链表操作(splice/merge/unique)以及迭代器遍历。与vector相比,list在中间插入删除性能更优,但查找和访问元素效率较低。典型应用场景包括需要频繁插入删除但不需随机访问的序列处理。使用时需包含<list>头文
2025-12-27 20:45:46
444
原创 C++中的deque容器详解
C++ STL中的deque(双端队列)是一种支持高效两端操作的序列容器。本文详细介绍了deque的基本特性、构造方式、容量操作、元素访问方法(如[]、at()、front()、back())以及修改操作(push_back/push_front、pop_back/pop_front、insert/erase等)。同时讲解了迭代器使用和完整示例代码,并提供了性能提示:deque在两端操作性能最佳(O(1)),中间操作性能较差(O(n)),随机访问性能与vector相当(O(1))。相比vector,dequ
2025-12-20 21:13:36
320
原创 C++中的vector容器详解
C++中的vector是STL提供的动态数组容器,支持自动内存管理和动态调整大小。它具有连续存储特性,支持快速随机访问,尾部操作高效。vector提供多种构造函数、容量操作(如size()、resize())、元素访问方法(如[]、at())以及修改操作(如push_back()、insert())。相比普通数组,vector更加灵活安全,但需注意中间插入/删除操作的时间复杂度为O(n)。通过合理使用reserve()可优化性能,减少内存重新分配次数。
2025-12-20 21:00:08
428
原创 C++标准模板库(STL)全面解析
本文全面解析C++标准模板库(STL)的核心组件,包括六大组成部分:容器、算法、迭代器、函数对象、适配器和分配器。重点介绍了序列容器(vector、deque等)、关联容器(set、map等)和容器适配器(stack、queue等)的使用方法,以及约100种STL算法的分类和应用。文章还详细讲解了迭代器的类别与操作、函数对象和Lambda表达式,并介绍了STL高级特性如分配器、类型特性、智能指针和元组。通过代码示例展示了STL各组件的典型用法,为C++开发者提供了全面的STL使用指南。
2025-12-20 20:59:20
948
原创 C++23 新特性详解:相较于 C++20 的主要改进
C++23 在 C++20 基础上引入多项重要改进:1) 语言核心增强,包括 if consteval 语句、多维下标运算符和放宽的 constexpr 限制;2) 标准库新增 <mdspan> 多维数组视图、<print> 格式化输出、<stacktrace> 堆栈追踪和 <expected> 错误处理;3) 并发编程改进,如 std::hive 容器和原子操作增强;4) 其他现代化特性,包括更好的字符串格式化、类型系统支持和模块改进。这些变化使 C++23
2025-12-06 18:13:57
560
原创 C++20 新特性详解:相较于 C++17 的主要改进
C++20 引入了多项重大改进,包括概念(Concepts)约束模板参数、模块(Modules)替代头文件、协程(Coroutines)支持异步编程、三向比较运算符(<=>)简化比较操作。标准库增强部分提供了Ranges库实现函数式编程、std::format格式化输出、完善的日历/时区支持以及新的位操作工具。其他特性如指定初始化、lambda捕获改进、数学常量等进一步提升了代码表达力。这些变化使C++20成为自C++11以来最重要的版本,显著改进了代码安全性、性能和组织结构。
2025-11-29 21:30:50
713
原创 C++17 新特性详解:相较于 C++14 的主要改进
C++17在C++14基础上引入了多项实用改进,主要包括:语言特性方面新增了结构化绑定、带初始化的if/switch语句、内联变量和折叠表达式;模板增强包括if constexpr和自动推导模板参数;标准库新增了文件系统库、并行STL算法以及optional/variant/any等容器类型;还提供了性能优化特性如强制省略拷贝和确定表达式求值顺序。这些改进使代码更简洁高效,增强了类型安全性,同时提供了标准化的文件操作和并行计算支持,显著提升了开发体验。
2025-11-29 20:28:46
583
2
原创 C++14 新特性详解:相较于 C++11 的主要改进
C++14在C++11基础上进行了多项改进,主要包括:语言核心方面增强泛型Lambda表达式和捕获初始化,支持函数返回类型推导,放宽constexpr限制允许循环和局部变量;新增二进制字面量和数字分隔符语法;引入变量模板。标准库方面增加了make_unique、shared_mutex等实用工具,支持异构查找和整数序列生成。这些改进虽不如C++11变革性,但显著提升了编码便利性和表达力,使C++更现代化。C++14完善了C++11特性,填补了标准库空白,增强了编译时计算能力,是C++发展历程中的重要优化版本
2025-11-22 20:16:17
364
原创 C++11 新特性详解:革命性的现代化更新
C++11是C++语言的一次革命性更新,引入了众多现代化特性。核心改进包括自动类型推导(auto)、基于范围的for循环、右值引用和移动语义提升性能、Lambda表达式支持函数式编程、强类型枚举(enum class)增强类型安全。内存管理方面新增智能指针(unique_ptr/shared_ptr),标准库扩展了多线程支持、正则表达式、随机数等功能。其他重要特性包括原始字符串字面量、用户定义字面量、默认/删除函数等。这些改进使C++更安全高效,为后续版本奠定了基础,标志着C++向现代化语言的重大转变。
2025-11-22 19:59:03
631
原创 C++03 标准详解:C++98的技术修订版
C++03是C++98的技术修订版本,主要修正语言缺陷而非引入新特性。该标准澄清了容器成员函数的异常安全性、流状态处理、模板规则和初始化语法等100多处问题,增强了标准库规范,改善了与C99的兼容性,并统一了类型定义和名称查找规则。虽然变化细微,但C++03提高了语言的稳定性和可移植性,为后续C++11的重大更新奠定了基础。关键改进包括模板特化规则、值初始化语法和标准库头文件补充等。
2025-11-15 21:10:01
623
原创 C++98 标准详解:C++的首次标准化
C++98是C++语言的第一个国际标准,主要贡献包括:1)引入标准模板库(STL)和通用算法;2)新增命名空间、bool类型和异常处理机制;3)支持RTTI和显式类型转换;4)统一了模板行为规范;5)建立了完整标准库体系。该标准统一了各种C++实现,奠定了现代C++基础,虽然功能较后续版本简单,但仍是许多传统系统的核心标准。C++98解决了与C语言的兼容性问题,同时增强了类型系统和面向对象特性。(149字)
2025-11-15 13:58:07
455
原创 CSP-S 2025题解
特此写一篇题解,来悼念逝去的CSP-S 2025。my score:不是绿题吗,怎么变成黄题了?!本人应该拿下了点1∼4,9,12∼141 \sim 4,9,12 \sim 141∼4,9,12∼14的分数。正解是反悔贪心,先把所有人都放到自己最喜欢的社团里,这时会发现,有一个社团人超了,那么,就要把这个社团的人踢了,将他踢到第二喜欢的社团。所以,先用合适的容器~~~~把所有人都放到自己最喜欢的社团里,然后将那个人多的社团进行排序,按照他最喜欢的社团的值减去第二喜欢的社团的值之差排序,还要注意,将差值相同的
2025-11-15 13:46:20
1335
9
原创 C++ 编译器优化级别详解:O1、O2 和 O3
本文详细介绍了C++编译器的三个主要优化级别:O1、O2和O3。O1提供基础优化,平衡编译速度与代码大小;O2是推荐的生产环境级别,显著提升性能;O3则采用激进优化策略,可能带来最佳性能但会增加代码体积和编译时间。文章比较了各级别的特点、适用场景和优化技术,并提供了实际应用建议,包括开发阶段使用-Og、生产环境推荐-O2、性能关键代码可尝试-O3等。最后还介绍了其他优化选项如-Os和-Ofast,并给出在Dev-Cpp中设置优化参数的具体步骤。
2025-10-28 09:57:59
1323
原创 C++中的LCA(最近公共祖先)详解
本文详细介绍了C++中求树结构最近公共祖先(LCA)的倍增法实现。LCA问题用于求解树中两个节点的深度最大的共同祖先节点,在路径查询和距离计算中有重要作用。核心算法分两步:预处理阶段通过DFS构建节点深度表和倍增表,查询阶段通过对齐深度和同步上跳操作高效找到LCA。文中提供了完整的C++实现代码,并分析了时间复杂度为预处理O(NlogN)、查询O(logN)的特点。此外,还对比了Tarjan和树链剖分等其他解法,指出倍增法在静态树结构查询中的通用性优势。该算法适用于需要频繁查询LCA的竞赛题目场景。
2025-10-26 22:13:22
368
原创 C++动态规划入门指南——助力CSP竞赛夺冠(加强版)
C++动态规划入门指南摘要:本文系统介绍动态规划(DP)在CSP竞赛中的应用,重点讲解线性DP和区间DP两大核心分类。线性DP通过状态转移方程递推求解,适用于斐波那契数列、爬楼梯等问题;区间DP则针对区间型问题,通过分治思想合并子区间解。文章详细解析了DP四步法(定义状态、状态转移、初始化边界、计算结果),并给出典型例题的C++实现代码(如爬楼梯、最大子数组和等)。同时对比不同解法的性能特点,提供学习路线建议,帮助读者掌握DP的核心思想与应用技巧,为算法竞赛打下坚实基础。(149字)
2025-10-18 20:09:38
935
原创 Windows 11中带Win键的实用快捷键大全|效率翻倍指南
Windows 11自带Win键的实用快捷键大全可显著提升工作效率。基础操作包括Win+D显示桌面、Win+L锁定电脑、Win+E打开资源管理器。窗口管理方面,Win+方向键调整窗口位置,Win+Tab查看多任务。系统设置类如Win+I快速进入设置,Win+X打开常用工具菜单。虚拟桌面方面,Win+Ctrl+D新建虚拟桌面。搜索功能通过Win+S/Q实现。其他实用组合包括Win+V查看剪贴板历史、Win+G启动游戏栏等。这些快捷键能减少鼠标依赖,建议用户根据习惯逐步掌握。
2025-10-11 21:20:29
1104
原创 C++动态规划入门指南——助力CSP竞赛夺冠
本文系统介绍了动态规划算法及其在CSP竞赛中的应用。首先概述了动态规划的三个基本特征:重叠子问题、最优子结构和无后效性。接着详细讲解了动态规划的四个实现步骤:定义状态、状态转移方程、初始化和计算。重点将动态规划分为8大类:线性DP、区间DP、背包问题、树形DP、状压DP、环形DP、计数类DP和博弈型DP,每类都配有典型应用场景和解题技巧。最后分享了记忆化搜索与迭代法的选择策略,以及空间复杂度优化方法。掌握这些动态规划的核心知识和分类体系,能帮助选手在算法竞赛中更高效地识别问题类型并设计解决方案。
2025-10-11 21:18:39
682
原创 Windows 10中带Win键的实用快捷键大全|效率翻倍指南
Windows 10高效快捷键指南 本文整理了Windows 10中带Win键的实用快捷键,帮助提升工作效率。主要包括:基础操作(Win+D显示桌面、Win+L锁定电脑)、窗口管理(Win+方向键调整窗口位置)、系统设置(Win+I快速打开设置)、虚拟桌面(Win+Ctrl+D新建桌面)以及搜索功能(Win+S全局搜索)等20多个实用组合。这些快捷键能减少鼠标依赖,实现精准操作,建议用户逐步练习形成肌肉记忆,显著提升工作和娱乐效率。
2025-10-06 18:21:55
2169
原创 Windows 7中带Win键的实用快捷键大全|效率翻倍指南
本文整理了Windows 7系统中17个实用Win键组合快捷键,涵盖基础操作、窗口管理、系统设置等场景。包括显示桌面(Win+D)、资源管理器(Win+E)、窗口布局调整(Win+方向键)、多任务切换(Win+Tab)等核心功能,以及任务栏快速启动(Win+数字键)等高效技巧。这些组合键能大幅减少鼠标操作,提升工作效率,建议用户根据需求逐步掌握并形成肌肉记忆。
2025-10-06 18:21:23
1068
原创 Linux 系统指令——助力信奥初赛
如果再往远一点看,掌握国产系统在未来世界信息战中也有重要地位,如果美国禁止中国使用 Windows ,我们也有 Linux 备用。最直观的, Linux 系统运行速度要比 Windows 快几十倍,这也就是为什么有时本地运行超时。但,身为一个 OIer ,掌握如何使用 Linux 至关重要!对于普通人,掌握如何使用 Windows 足以。所以,这是需要我们掌握的!为了自己,为了国家……那么,你常用的一定是 Windows 吧。2024 CSP-S 初赛。2023 CSP-S 初赛。
2025-09-19 21:35:52
703
原创 LaTeX公式语法完全指南|从入门到精通
本文系统介绍了$\LaTeX$数学公式的语法和使用方法。从基础环境搭建(行内公式$...$和独立公式块$$...$$)到常用符号大全(希腊字母、运算符、微积分符号等),再到进阶布局控制(上标下标、分数根式、矩阵数组)。还讲解了多行公式对齐、傅里叶级数案例等高级功能,以及常见问题解决方案。最后给出最佳实践建议,包括模块化编写、语义化命名和使用版本控制等。$\LaTeX$虽然学习曲线陡峭,但其精确排版能力值得掌握,建议从简单示例入手逐步进阶。
2025-08-07 19:41:46
1847
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅