- 博客(27)
- 收藏
- 关注
原创 C++ 进阶笔记:宏
本文介绍了C++中宏(Macros)的使用方法和注意事项。宏是预处理器功能,在编译前进行文本替换,主要包括基础宏、参数化宏和条件编译宏三种形式。重点讲解了条件编译在Debug/Release模式下的应用,以及多行宏和内置宏(FILE、LINE)的使用技巧。文章指出宏虽强大但需谨慎使用,建议优先考虑类型安全的替代方案,并特别强调了宏在数据库开发中的典型应用场景。
2026-03-18 20:18:45
188
原创 C++ 进阶笔记:栈内存 vs 堆内存
本文对比了C++中栈内存和堆内存的核心区别。栈内存通过栈指针快速分配释放,生命周期由作用域自动管理,但空间有限(1-2MB);堆内存通过new/delete手动管理,速度较慢但空间几乎不受限。汇编层面显示栈分配仅需1条指令,而堆分配需复杂簿记工作。建议优先使用栈内存,仅在需要跨作用域、大数据或动态大小时使用堆内存。进阶技巧如内存池技术可结合两者优势。
2026-03-18 19:48:40
229
原创 【无标题】
C++进阶笔记探讨了多返回值处理和模板技术。多返回值可通过结构体包装(推荐)、引用传参、容器或元组实现,其中结构体方案语义清晰且高效。模板是C++泛型编程核心,支持类型/数值参数,具有延迟实例化特性。通过定长栈数组示例展示了模板在性能优化上的优势:栈内存分配比堆更快,编译期常量可深度优化。模板函数使用typename声明,编译器能自动推断类型。
2026-03-17 21:14:19
217
原创 2.27 queue stack priority_queue的巩固
其实还做了一些其他题目 但是难度都是简单 意义不大 就不写了寒假要结束力 不开心。
2026-02-27 15:30:14
667
原创 2.26 栈的巩固 最小栈 逆波兰表达式求值 有效的括号 验证栈序列
本文介绍了利用栈结构解决的四个算法问题:1.有效的括号(使用栈匹配括号);2.逆波兰表达式求值(数字入栈,运算符出栈计算);3.最小栈(辅助栈维护最小值);4.验证栈序列(模拟出入栈过程)。文章指出这些题目虽然难度不大,但需要掌握栈的LIFO特性,并注意边界条件处理。作者表示因时间有限仅提供基础解法,最后强调理解栈的性质是解题关键。
2026-02-26 21:11:49
352
原创 2.26 回溯算法终极巩固 组合 只出现一次的数II N皇后
本文探讨了三道回溯算法经典题目:组合、全排列II和N皇后问题。组合问题通过限制后续数字必须大于前面数字来避免重复;全排列II通过排序和used数组巧妙处理重复数字的去重;N皇后问题则采用逐行回溯和int类型used数组记录攻击范围。文章重点分析了全排列II中!used[i-1]条件的深层含义,指出这是实现深度剪枝的关键。这些题目展示了回溯算法在不同场景下的应用技巧,特别是剪枝策略在解决重复问题和优化搜索空间方面的重要作用。
2026-02-26 18:57:26
1014
原创 2.25 vector使用强化之回溯算法
本文总结了作者通过三道回溯算法题目巩固vector和回溯算法的学习过程。首先通过电话号码字母组合问题,展示了多进制编码和回溯两种解法,重点分析了回溯模板的应用。接着在全排列问题中,介绍了标记回溯和交换回溯两种实现方式,阐述了如何通过used数组或元素交换来避免重复。文章强调了回溯算法的核心思想:利用递归探索所有可能路径,通过"做出选择-递归-撤销选择"的模式解决问题。虽然计划中的其他题目未能完成,但已通过这三道典型题目掌握了回溯算法的基本框架和应用技巧。
2026-02-25 22:05:44
888
原创 C++ 算法学习笔记:位运算之只出现一次的数
本文总结了C++位运算在解决"只出现一次的数字"问题中的应用。通过LeetCode三道典型题目(136、137、260题),展示了异或运算的自反性、位计数统计和分组异或等技巧。重点包括:利用异或性质处理单个出现数字,使用位向量统计三次出现数字,以及通过差异位分组解决两个出现一次数字的问题。文章还强调了1U防溢出和__builtin_ctzll优化等细节,体现了位运算的高效性和实用性。
2026-02-24 22:29:15
561
原创 2.22 STL 中string的学习
本文介绍了C++标准模板库(STL)中的string类及其常用接口。STL是C++标准库的重要组成部分,包含六大组件。string类是一个动态字符数组,提供自动内存管理、安全操作和丰富功能。文章详细分类讲解了string的构造赋值、容量操作、元素访问、修改操作、查找操作、子串比较、迭代器支持以及与C字符串转换等接口,并给出综合示例和使用注意事项。同时简要介绍了迭代器的通用遍历方式和auto范围for循环的便捷性。
2026-02-23 16:14:12
1005
原创 2.22模版初阶学习
当我们编译一个swap函数的时候 如果真正想要通用 就需要编写为int double char float long short unsigned int等各种类型的swap函数 非常的麻烦有没有办法做到通用呢?
2026-02-22 18:33:31
198
原创 2.22 C++内存管理学习
C++内存管理摘要:C++程序内存分为栈区(自动管理局部变量)、堆区(手动管理动态内存)、数据段(存储全局/静态变量)和代码段(存放程序指令和常量)。new/delete相比malloc/free的核心优势在于能自动调用构造/析构函数,实现对象生命周期的完整管理。operator new/delete是底层内存分配机制,而placement new可在已分配内存上构造对象。关键区别在于new是类型安全运算符,能自动计算大小并处理异常,而malloc需要手动计算且不调用构造/析构函数。混用两种内存管理方式会导
2026-02-22 17:50:33
739
原创 C++ 核心笔记:const 修饰与初始化列表
本文总结了C++中const修饰、初始化列表、匿名对象和编译器优化的关键知识点。const修饰强制初始化对象,限制只能调用const成员函数,mutable变量例外。初始化列表是成员变量真正的定义处,对const成员、引用和无默认构造的对象必须使用。匿名对象是临时对象,生命周期短暂但可通过引用延长。编译器通过RVO/NRVO等优化技术消除不必要的拷贝操作,C++17起部分场景强制优化。这些特性共同提升C++代码的安全性和效率。
2026-02-22 16:16:20
788
原创 C语言终极巩固:连连看的实现
本文实现了一个连连看小游戏,包含以下核心功能:1.游戏初始化(gamestart/gameinit)支持自定义地图尺寸,并进行合法性检查;2.彩色UI界面(mapprint)实现动态颜色显示;3.寻路算法(mapfind)采用优化后的递归方案,支持最多两次转弯;4.可解性判断(hassolution)暴力遍历所有可能配对;5.AI自动通关(AIGamer)利用提示系统完成游戏。项目特点包括:地图随机生成保证可解性、生命值限制替代难度设置、递归寻路算法优化等。代码约300行,通过结构体管理游戏状态,实现了完整
2026-02-21 00:16:57
972
原创 C++小白2.7学习内容
本文摘要: 本文系统介绍了C++基础语法特性,从Hello World程序开始,详细讲解了命名空间(namespace)的概念及其解决命名冲突的作用,分析了C++输入输出流(cin/cout)的使用方法。重点阐述了缺省参数的定义规则和实际应用场景,函数重载的实现原理及注意事项。深入讲解了引用(引用)的概念、特性及与指针的区别,包括const常引用的权限控制问题。最后介绍了内联函数(inline)的优化作用和nullptr替代NULL的优势。文章通过大量代码示例展示了这些核心特性的具体应用,为后续类和对象的学
2026-02-07 21:18:26
657
原创 2.6 手撕C语言数据结构七个经典算法 选择排序 插入排序 希尔排序 堆排序 快速排序 归并排序 计数排序
本文介绍了多种经典排序算法及其实现方法,包括选择排序、插入排序、希尔排序、堆排序、快速排序、归并排序和计数排序。重点分析了快速排序的三种实现方式(Horea算法、快慢指针法和挖坑法)及其优化策略(小区间优化和三数取中)。文章还探讨了堆排序的内存访问效率问题,以及归并排序的非递归实现。每种算法都配有详细的代码实现和性能评价,为读者提供了全面的排序算法参考指南。
2026-02-06 20:21:11
524
1
原创 2.4 排序学习 插入排序 希尔排序 快排 快排的小区间优化和三数取中优化
本文介绍了三种经典排序算法:插入排序、希尔排序和快速排序。插入排序通过将元素插入有序序列实现排序;希尔排序是插入排序的优化,先进行gap分组的预排序;快速排序采用分治思想,通过确定基准值key分隔区间。文章详细说明了各算法的实现原理和代码实现,包括插入排序的数组移动、希尔排序的gap控制策略(gap=gap/3+1或gap/2),以及快速排序的基准值选取优化(三数取中)和小区间优化(当区间小时改用堆排序)。针对快速排序在有序情况下的性能问题,提出了改进方案。
2026-02-04 15:44:27
277
原创 2.3二叉树学习:查找 创建 销毁 层序遍历 二叉树的一些性质 部分OJ题
遇到非空字符就先root->val = a[(*p)++] 接着先root->left = createtree(a,pi) root->right = createtree(a,pi);算法:不论是否是空节点 我们都先正常层序遍历 当遇到第一个空节点的时候 队列里剩下的应该都是空节点 我们跳出循环 只要检查队列里面有没有非空节点就行了。我们利用一个队列 每次入一个节点 然后每出一个节点 就将这个的孩子加入队列 实现层序优先遍历。增加一个度为2的 度为1的数量减少一个 度为零的数量多一个。
2026-02-03 19:31:24
663
原创 2.2学习内容:二叉树
本文总结了堆和二叉树的核心知识点。在堆的应用中,重点介绍了高效获取前K个最大数的方法:通过建立K个元素的小堆,仅需比较剩余元素与堆顶,大幅降低空间复杂度。二叉树部分系统讲解了三种遍历方式(前序、中序、后序)的递归实现,并详细推导了计算节点数、叶子数、高度及第K层节点数的递归公式。最后通过LeetCode单值二叉树问题,展示了如何运用递归思想解决实际问题。全文强调递归在树结构中的核心地位,为后续学习更复杂的树结构(如AVL树、红黑树)奠定基础。
2026-02-02 22:29:54
559
原创 2.1学习内容
本文介绍了两种数据结构实现方法:1.使用双栈实现队列,通过Push栈和Pop栈的配合完成入队出队操作;2.堆的实现与应用,包括小顶堆的插入删除操作、向上/向下调整算法,以及堆排序的实现。重点讲解了堆的数组存储方式、父子节点索引关系,并提供了完整的C语言实现代码,包含堆初始化、插入、删除、排序等功能模块。两种方法都体现了数据结构间的相互转换和高效算法设计思想。
2026-02-02 12:35:13
598
原创 1.31学习内容
本文介绍了队列的实现与应用。使用单链表实现队列时,采用phead和ptail双指针结构,并通过queue结构体封装指针和size变量。提供了队列基本操作的实现代码,包括初始化、入队、出队、获取队首/队尾元素等。通过OJ题目展示了队列的实际应用:1) 用两个队列实现栈的功能,通过元素转移实现后进先出;2) 设计环形队列,使用数组实现并处理边界条件,通过取模运算实现循环特性。代码中特别强调了空指针和野指针的安全处理。
2026-01-31 21:56:43
267
原创 1.30学习
栈是一种特殊的线性表 只能在栈顶进行插入数据和删除数据 遵循last in first out的性质。顺序表利用realloc进行扩容操作 对内存占用比较大 但是可以进行内存的直接访问。这里有一个细节 使用realloc函数的时候 可能是本地扩容 也可能是异地扩容。通过比较扩容前后的地址 就能看出是否是异地扩容 而且异地扩容的代价很大。解决要点:利用栈的后进先出特性 匹配后出栈 注意要检测空栈的情况。(LIFO) 可以利用数组实现也可以利用双向链表实现。带头双向循环链表可以进行频繁的插入和删除。
2026-01-30 17:19:55
207
原创 11月14日力扣每日一题解析
result[i][j] = diff[i][j] +result[i][j-1]+result[i-1][j]-result[i-1][j-1] 对于不存在的元素就不要相加。这题如果用暴力算法 那么我们思路很明确:直接对每个坐标进行解析 然后将子矩阵中的所有元素遍历一遍 进行result++ 代码如下。应用在差分矩阵 当我们获得r1 r2 c1 c2的坐标时 我们需要再不超出边界的情况下进行如下操作。注意我们的所有赋值都不能溢出 所以可以加上if判断 同时将diff数组的边长设置为n+1。
2025-11-15 01:24:51
179
原创 11.6 C小白数据结构学习:栈 附带力扣题目实践
本文介绍了基于顺序表实现栈的方法,并应用于LeetCode"有效的括号"题目。首先定义栈结构体,包含数据指针、栈顶位置和容量,实现了初始化、销毁、入栈、出栈等基本操作。在解决括号匹配问题时,使用栈来存储左括号,遇到右括号时与栈顶元素比较,匹配则出栈。文中特别处理了两种特殊情况:首字符为右括号和左括号多于右括号的情况。最后提供了完整的C语言实现代码,通过栈操作和判空处理确保括号匹配的正确性。
2025-11-06 22:37:22
177
原创 链表OJ题总结2
本文分享了四道力扣链表题目的解题思路:141题使用快慢指针判断环形链表并给出数学证明;142题在141题基础上,通过快慢指针相遇点推导入环节点位置;160题利用链表相交特性快速定位交点;138题通过穿插复制节点巧妙处理随机指针的复制。每道题都提供了清晰的分析思路和关键代码片段,展示了链表问题的经典解法。
2025-11-06 00:25:15
930
原创 C小白近期力扣链表基础题总结
本文讨论了LeetCode链表相关题目的解法。160题通过比较尾节点判断链表相交,利用长度差定位交点,还给出了更优的双指针遍历解法。876题使用快慢指针找中间节点,206题通过三指针法反转链表。最后提出将中间节点查找和链表反转结合解决回文链表问题的思路,将复杂问题拆解为简单问题的组合。文章提供了多种解题方法的代码实现和思路分析,强调数学规律和算法优化的重要性。
2025-11-04 23:02:10
248
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅