- 博客(50)
- 收藏
- 关注
原创 【C++】异常与智能指针
本文系统探讨了C++异常处理与智能指针机制。在异常处理方面,详细分析了异常抛出/捕获机制、栈展开过程、异常安全及规范,通过除法运算等案例展示了异常处理的实际应用。在智能指针方面,阐述了RAII设计思想,剖析了auto_ptr、unique_ptr、shared_ptr和weak_ptr的实现原理及适用场景,特别针对shared_ptr的循环引用问题提出了weak_ptr解决方案。文章还探讨了智能指针线程安全问题、内存泄漏检测及预防措施,为C++资源管理提供了全面指导。
2025-12-19 10:46:51
796
原创 【C++11深度解析(2)】从新增类功能到智能指针的现代 C++ 核心新特性
C++11新特性详解:从语法到实践 本文全面介绍了C++11标准引入的核心特性,包括类功能增强、STL容器变化、lambda表达式和包装器等重要内容。在类功能方面,重点讲解了默认移动构造/赋值、成员变量初始化、final/override关键字、委托构造函数和继承构造函数等新特性。lambda表达式部分详细解析了语法规则、捕捉列表机制和实际应用场景。最后介绍了function包装器和bind适配器的使用方法,展示了如何统一处理不同类型的可调用对对象。这些新特性为现代C++开发奠定了重要基础。
2025-12-17 16:39:18
663
原创 【C++11深度解析(1)】从初始化统一到移动语义的现代 C++ 核心新特性
本文深入剖析了C++11的核心特性,包括列表初始化、右值引用与移动语义、可变参数模板等关键技术。在列表初始化部分,详细介绍了{}统一初始化方式、initializer_list模板类及其应用场景;在右值引用章节,系统阐述了左值/右值概念、移动构造/移动赋值实现原理及其在性能优化中的应用;最后讲解了可变参数模板的基本语法、包扩展机制以及emplace系列接口的高效实现。通过大量代码示例和底层原理分析,展示了C++11如何通过语言特性革新提升编程效率与性能,为现代C++开发提供了重要技术支撑。
2025-12-17 16:38:25
677
原创 【C++—STL】哈希表底层封装与unorderedset/unorderedmap模拟实现
本文分析了unordered_set/map的底层实现原理,基于哈希表结构设计了一套复用方案。文章首先通过SGI-STL源码分析哈希表框架,然后详细介绍了复用哈希表的关键技术:使用模板参数T统一存储类型,通过KeyOfT仿函数提取键值;重点阐述了迭代器实现中的桶间遍历策略,需持有哈希表指针以定位下一个非空桶。最后展示了如何封装哈希表实现unordered_set/map,包括map的operator[]特性实现。该方案通过模板和仿函数技术,使同一哈希表表能同时支持key和key-value两种存储结构.
2025-12-10 15:13:48
1057
原创 【C++数据结构进阶】深度剖析哈希表:从底层原理到代码实现
本文全面介绍了哈希表的核心原理与实现方法。首先阐述了哈希表的基本概念,包括其时间复杂度的特性、哈希冲突问题及负载因子概念。重点分析了哈希函数设计方法(除法散列、乘法散列、全域散列)和两种冲突处理策略:开放定址法(含线性探测、二次探测、双重探测)和链地址法。通过C++模板代码详细展示了两种方法的实现细节,包括扩容策略、状态标记处理等关键技术点。最后对比了哈希表与红黑树的性能特点,指出哈希表在查找效率上的优势及其在工程实践中的应用场景。文章从理论到实践系统性地讲解了哈希表的构建方法,为读者提供了全面的哈希表知识
2025-12-10 15:02:37
596
原创 【C++—STL】红黑树底层封装与set/map模拟实现
本文分析了C++ STL中set和map容器的底层实现机制。两者均基于红黑树(RBTree)实现,通过泛型编程实现代码复用:set存储键(Key),map存储键值对(pair<const Key,T>)。文章详细剖析了红黑树模板类的设计思路,包括KeyOfT仿函数提取键值、迭代器实现原理(中序遍历)以及operator[]的实现技巧。通过模拟实现完整展示了set/map的封装过程,重点解决了类型安全、迭代器const控制、键值分离等关键问题,为理解STL关联容器提供了深入的技术参考。
2025-11-30 17:35:43
602
1
原创 【C++数据结构进阶】深度剖析红黑树:从底层原理到手撕代码
红黑树是一种重要的自平衡二叉搜索树,广泛应用于STL的map和set实现。它通过四个核心规则(根节点为黑、无连续红节点、路径黑节点数相同)确保近似平衡,时间复杂度为O(logN)。相比AVL树,红黑树旋转次数更少,插入删除效率更高。实现上采用三叉链结构,插入时通过变色和旋转(单旋/双旋)处理不同情况来维持平衡。验证时需检查四条规则是否满足。红黑树牺牲严格平衡换取更优综合性能,是查询和修改频繁场景的理想选择。理解红黑树原理有助于优化STL容器的使用和开发高效数据结构。
2025-11-29 17:15:04
1389
原创 【C++数据结构进阶】深度解析AVL树:从底层原理到手撕代码
AVL树是一种自平衡二叉搜索树,通过控制节点左右子树高度差不超过1来保持平衡。本文详细介绍了AVL树的实现原理:1)使用平衡因子(右子树高度-左子树高度)监控平衡状态;2)插入节点后通过四种旋转(左旋、右旋、左右旋、右左旋)调整不平衡子树;3)旋转后需更新相关节点的平衡因子。AVL树解决了普通BST可能退化的问题,将查找效率稳定在O(logN),但维护平衡增加了插入删除的复杂度。文中提供了完整的C++实现代码和平衡检测方法。
2025-11-29 17:13:34
1272
原创 【C++—STL】set和map的使用
本文系统介绍了C++ STL中的关联式容器set和map系列。主要内容包括:1. 对比序列式容器和关联式容器的区别,阐述关联式容器的非线性结构特点;2. 详细讲解set类的构造、迭代器、增删查操作,以及multiset与set的差异;3. 深入分析map类的使用,包括pair类型、构造遍历、增删查改,重点解析operator[]的多功能实现;4. 通过两个数组交集、环形链表检测、随机链表复制等例题展示实际应用。并提供了丰富的代码示例和多种解题思路。
2025-11-27 14:15:03
833
原创 【C++数据结构进阶】二叉搜索树
本文详细介绍了二叉搜索树的相关概念与应用。首先阐述了二叉搜索树的定义和性质,即左子树值小于等于根节点,右子树值大于等于根节点。接着分析了其性能特点,最优情况下时间复杂度为O(logN),最差情况下退化为O(N)。文章详细讲解了二叉搜索树的遍历、插入、查找和删除操作,并给出了C++代码实现。最后区分了key和key/value两种使用场景,前者适用于简单查找,后者支持键值对存储。文章指出二叉搜索树是AVL树和红黑树的基础,虽然存在性能局限,但在特定场景下仍具有实用价值。
2025-11-27 14:13:36
697
原创 C++——多态
本文系统介绍了C++多态的实现原理与关键机制。主要内容包括:1)虚函数的概念、定义与重写规则,特别强调了析构函数重写的必要性;2)多态的实现条件(基类指针/引用+虚函数重写)及其底层原理(虚函数表机制);3)动态绑定与静态绑定的区别;4)override/final关键字的使用场景;5)纯虚函数与抽象类的特性。通过汇编代码和内存分析,深入剖析了多态调用的底层实现过程,包括虚函数表的存储位置和结构。文章最后通过典型例题演示了多态的实际应用场景,为深入理解面向对象编程提供了重要参考。
2025-11-25 09:25:22
1115
原创 C++——继承
本文详细讲解了C++继承机制的核心概念与应用。主要内容包括:1.继承的基本概念与定义,通过Person、Student、Teacher类示例说明代码复用优势;2.继承访问权限规则,强调public继承的实用性;3.派生类默认成员函数的实现要点,特别是构造/析构顺序;4.多继承与菱形继承问题,分析虚继承解决方案5.继承与组合的对比,建议优先使用组合降低耦合度。文章通过丰富代码示例,系统阐述了继承机制在面向对象程序设计中的层次结构特性,同时指出了菱形继承等复杂场景的应对策略,为C++继承机制的学习提供了全面指导
2025-11-25 09:24:08
713
原创 C++——模板进阶
系统介绍了C++模板编程的核心概念与应用。主要内容包括:1)非类型模板参数的定义与限制,重点解析了array容器的特性和使用方法;2)模板特化的实现方式,详细阐述函数模板特化和类模板特化(全特化与偏特化)的语法规则与注意事项;3)模板分离编译问题的成因及两种解决方案;4)全面总结了模板编程的优势(代码复用、类型安全)与局限性(编译时间长、调试困难)。通过具体代码示例,文章对比了普通数组与array容器的差异,并提供了模板特化的实用建议。本文适合需要深入理解C++模板机制的开发者参考学习。
2025-11-16 21:20:20
978
原创 C++—stack/queue/deque:stack和queue的使用及模拟实现
系统讲解了C++中栈(stack)和队列(queue)的使用与实现。主要内容包括:1) 栈和队列的基本接口及典型题目解析(最小栈、层序遍历等);2) 容器适配器原理,通过封装底层容器实现栈和队列;3) deque的底层实现剖析,解释其作为栈/队列默认容器的优势;4) 比较vector、list和deque的特性差异及适用场景。vector适合随机访问,list适合任意位置插入,deque则专长于双端操作。通过详细代码示例和性能分析,帮助开发者深入理解这些核心容器的实现机制和使使用策略。
2025-11-15 18:45:40
893
原创 C++—priority_queue/仿函数:优先级队列的使用及模拟实现
系统介绍了C++中的仿函数(Functor)及其在优先级队列(priority_queue)中的应用。STL中广泛使用仿函数实现算法通用性,包括算术、比较和逻辑运算等。priority_queue是基于堆实现的容器适配器,默认使用vector作为底层容器,通过仿函数控制元素优先级。文章详细分析了仿函数的使用场景、优先级队列的实现原理(包括向上/向下调整算法),并解释了优先选择vector而非deque作为底层容器的原因。最后通过自定义仿函数案例展示了如何扩展优先级队列的功能。
2025-11-15 17:55:58
838
原创 C++—list:list的使用及模拟实现
详细介绍了C++中list容器的使用和模拟实现。主要内容包括:list接口的使用(构造/析构函数、数据操作接口等),以及list的底层实现(节点封装、迭代器实现、构造函数实现等)。文章通过代码示例展示了list的各种操作方法,并分析了list与vector在排序效率上的差异。在模拟实现部分,重点讲解了节点结构、迭代器封装和构造函数的实现原理,特别是如何处理深拷贝和迭代器失效问题。整体内容系统全面,,对理解list容器的工作原理具有重要参考价值。
2025-11-11 10:30:27
953
原创 C++—vector:vecor使用及模拟实现
详细介绍了C++中vector容器的使用方法与模拟实现。主要内容包括:1)vector常用接口,如构造/析构函数、容量操作、数据操作等;2)vector的三种遍历方式;3)vector的模拟实现,重点讲解了构造/析构、容量操作和数据操作等核心功能的实现原理;4)插入删除操作导致的迭代器失效问题及解决方法。文章通过代码示例和原理分析,深入剖析了vector的底层实现机制,特别强调了深拷贝与浅拷贝的区别、reserve和resize的区别等关键知识点,并提供了现代写法与传统写法的对比。
2025-11-11 10:29:11
834
1
原创 C++—string(2):string类的模拟实现及底层剖析
详细介绍了C++中string类的模拟实现。主要内容包括:1)构造/析构函数的实现,包括现代写法和传统写法;2)容量操作如reserve()和resize()的实现;3)遍历访问操作,实现了迭代器设计和[]运算符重载;4)修改操作包括push_back()、append()、insert()等;5)非成员函数实现如流操作、比较运算符等。特别关注了深拷贝处理、扩容优化、迭代器设计等关键问题,提供了多种实现思路,并分析了不同写法的优缺点。
2025-11-02 17:40:35
203
原创 C++—string(1):string类的学习与使用
介绍了C++中string类的核心概念与使用方法。主要内容包括:1)字符编码基础(ASCII、GBK、Unicode等编码方案);2)string类相较于C字符串的优势(自动内存管理、安全接口、面向对象封装等);3)string类的常用操作(构造/析构、容量管理、遍历访问、修改操作等);4)C++11新增特性(auto类型推导、范围for循环);5)string类与STL的集成。文章通过大量代码示例详细演示了string类的各种用法,并分析了不同编码方案的适用场景,为C++开发者提供了全面的字符串处处理指南
2025-11-02 17:40:05
980
原创 C++模版:模板初阶及STL简介
本文介绍了C++泛型编程的核心机制——模板。模板通过参数化数据类型实现代码复用和类型安全,分为函数模板和类模板。函数模板通过隐式/显式实例化生成具体类型函数,类模板必须在实例化时显式指定类型参数。文章还概述了STL(标准模板库)的六大组件及其作用,包括容器、算法、迭代器等核心部分。STL基于模板技术,提供了高效、通用的数据结构和算法实现,是C++标准库的重要组成部分。通过模板技术,C++实现了比C语言更强大的泛型编程能力。
2025-10-19 20:00:01
786
原创 C++——类和对象(3)
本文深入探讨了C++中构造函数初始化列表、类型转换、static成员、友元、内部类、匿名对象及编译器优化等核心概念。重点解析了构造函数初始化列表的使用规则和注意事项,对比了内置类型与类类型的隐式转换机制,详细介绍了static成员的特性和访问方式。同时阐述了友元函数和友元类的用法,内部类的封装特性,以及匿名对象的生命周期管理。最后通过实例分析了编译器在对象拷贝时的优化策略。文章内容系统全面,对深入理解C++面向对象编程特性具有重要参考价值,适合具有一定C++基础的开发者阅读学习。
2025-10-18 20:14:54
1003
原创 C++内存管理:new和delete详细解析
本文系统讲解了C++内存管理机制,重点分析了new/delete与malloc/free的区别。主要内容包括:1)C++内存区域划分(栈、堆、静态区等);2)new/delete对内置类型和自定义类型的处理,特别是构造函数/析构函数的自动调用;3)operator new/delete的底层实现原理;4)定位new表达式的作用;5)new[]与delete[]的特殊处理机制。文章通过大量代码示例和内存图示,深入剖析了C++动态内存管理的核心机制,特别强调了new/delete相比malloc/free在类型
2025-10-18 20:12:43
1127
原创 C++——类和对象(2)
本文详细介绍了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值运算符重载。构造函数用于初始化对象,析构函数用于资源清理,拷贝构造函数实现对象拷贝初始化,赋值运算符重载完成对象间的拷贝赋值。文章通过代码示例展示了如何正确实现这些函数,特别是当类包含资源申请时需手动实现深拷贝。此外,还介绍了const成员函数、运算符重载规则以及取地址运算符重载等特性。对于需要资源管理的类,必须正确实现析构函数、拷贝构造函数和赋值运算符重载以避免内存泄漏等问题。文中所有代码示例均可用于实际项目开发参考。
2025-10-13 11:57:31
1050
原创 C++——类和对象(1)
本文介绍了C++中类的定义与使用,主要包括:1. 类作为自定义数据类型,包含成员变量和成员函数,通过访问限定符(public/private/protected)实现封装;2. 类的实例化过程,对象只存储成员变量,成员函数存储在代码段;3. this指针的隐式机制,编译器自动添加this参数实现对象区分;4. 对象大小计算遵循内存对齐规则,空类对象占1字节。文章还分析了通过空指针调用成员函数的可行性,指出当函数不访问成员变量时可正常运行。这是C++面向对象编程的基础知识总结。
2025-10-13 11:25:37
1013
原创 C++初识——基础语法大全
万字解析,一文读懂C++基础知识! 本文介绍了C++语言的核心基础知识,包括其发展历史、命名空间、输入输出、缺省参数、函数重载、引用、内联函数和nullptr等核心特性。并通过代码分析层层递进,抽丝剥茧,深入理解。通过这篇文章的学习足以让我们为C++的面向对象的深入学习打下坚实的基础 !
2025-10-01 17:35:04
866
原创 数据结构中的排序秘籍:从基础到进阶的全面解析
本文系统介绍了数据结构中的核心排序算法,包括插入排序、选择排序、交换排序、归并排序和计数排序等类别并且有附有详细的代码。详细解析了各类算法的实现原理、代码示例、复杂度分析和适用场景。从基础的冒泡、选择、插入排序,到进阶的快速、归并、堆排序,再到特殊场景下的计数排序,全面解析各类算法的原理、代码实现与适用场景。无论是想理解排序的底层逻辑,还是在实际开发中选择最优算法,这里都有你需要的答案!
2025-09-13 18:58:08
787
原创 二叉树OJ习题
本文总结了几道Leetcode经典的二叉树题目的解题思路和代码实现,每道题都详细分析了数据结构的解题思路,包含高频考点,并提供了完整代码实现,由易到难,层层深入,助你攻克二叉树难题,帮助理解其核心特性!
2025-09-01 21:52:40
858
原创 数据结构——二叉树
本文系统介绍了树和二叉树的基本概念、存储结构及实现方法,一文让你理解二叉树。二叉树是数据结构中的 "基础骨架",更是理解复杂树形结构(如红黑树、B + 树)的关键跳板。本文从核心概念出发,拆解满二叉树、完全二叉树等特殊形态的特性,并用堆和链式结构两种方法实现二叉树,通过代码手把手教你学会二叉树。
2025-08-31 23:10:42
2174
原创 栈和队列OJ习题
本文总结了几道LeetCode经典栈与队列题目的解题思路和代码实现:每道题都详细分析了数据结构设计思路,包含高频考点,并提供了完整代码实现,助你攻克栈和队列难题,帮助理解栈与队列的核心特性(LIFO/FIFO)
2025-08-29 22:05:23
1032
原创 数据结构——队列
本文系统介绍了队列数据结构及其应用。队列遵循FIFO原则,主要通过链表实现以避免顺序表的高时间复杂度。文章详细阐述了队列的实现代码,包括初始化、入队、出队等核心操作。在应用方面,队列广泛用于任务调度(如进程管理)、缓冲处理(如网络通信)、广度优先搜索(BFS)以及消息队列(如电商系统异步处理)等场景。队列作为基础数据结构,在计算机科学领域发挥着重要作用,对于算法设计和系统开发具有重要意义。
2025-08-27 18:37:41
938
原创 数据结构——栈
本文介绍了栈数据结构的基本概念、实现方式,通过数组实现入栈(push)和出栈(pop)操作。文中提供了C语言的完整实现代码,包括初始化、销毁、入栈、出栈等核心操作函数。栈在计算机科学中应用广泛,如浏览器后退功能和系统调用管理等,其价值在于对数据访问顺序的精准控制。通过限制操作方式,栈实现了高效的数据管理,是程序设计中不可或缺的基础数据结构。
2025-08-27 11:37:13
542
原创 数据结构——链表(2)——双向链表
还在因单链表单向遍历、删节点找前驱而困扰?这篇双向链表详解帮你解惑!文中拆解 “prev+next 双指针” 核心结构,手把手教带头节点的插入、删除、查找、遍历代码及其他常用的函数方法实现,对比单链表优劣助你选对场景!夯实基础、解决开发难题,这篇值得立刻读!
2025-08-26 17:15:21
314
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅