自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 【算法】双指针

本文讲解了双指针算法在各类数组问题中的应用,通过以下几个题目解析了双指针的使用技巧。内容:移动零(通过交换非零元素)、复写零(前后双指针配合)、快乐数(快慢指针判断循环)、盛水容器(左右指针求最大面积)、有效三角形个数(排序后固定最大值)、两数之和(有序数组双指针)、三数之和(固定+双指针+去重)和四数之和(双重固定+双指针)。

2025-12-14 14:46:10 616 1

原创 【C++】对set和map的使用

本文介绍了C++ STL中的set和map容器。set是基于红黑树实现的key模型容器,存储元素唯一。map是key-value模型容器,同样基于红黑树实现,元素以pair形式存储,key不可修改而value可修改。此外还介绍了multiset和multimap,它们与set/map的主要区别是允许重复key值。

2025-12-04 10:26:22 1032 5

原创 二叉搜索树(C++实现)

本文介绍了对二叉搜索树(BST)的详细认识,并且通过C++对其基础操作进行了实现。本文为后续学习set和map奠定了基础。

2025-11-23 21:10:52 843 6

原创 【C++】多态的运用

本文主要介绍了C++中多态的表层运用和底层实现原理。详细分析了虚函数表的相关机制。其它还有C++11新增的override和final关键字的作用,抽象类和纯虚函数等等许多多态相关的知识认识。文章也通过内存分析和汇编代码验证了多态的实现细节。

2025-11-18 10:18:23 659 15

原创 【C++】继承的运用

本文系统介绍了C++中的继承机制及其应用。主要内容包括:1)继承基本概念和使用方式;2)继承的访问权限变化;3)对象赋值转换的切片特性;4)继承中的名称隐藏与作用域处理;5)派生类默认成员函数的实现规则;6)特殊继承情况(友元、静态成员)的处理;7)复杂继承形式(单继承、多继承、菱形继承)及虚拟继承解决菱形继承问题。

2025-11-14 00:06:04 722 15

原创 【C++】模板(进阶)--- 模板的进一步使用

本文深入探讨了C++模板的高级用法,主要包括:1. typename的双重作用,特别强调其在嵌套类型声明中的必要性;2. 非类型模板参数的使用;3. 模板特化的两种形式;4. 模板分离编译问题的原因分析及解决方案。

2025-11-09 15:45:09 898 5

原创 【C++】栈(stack)、队列(queue)、优先队列(priority_queue)的使用认识与实现模拟

本文介绍了C++中的三种容器适配器:栈(stack)、队列(queue)和优先队列(priority_queue)。栈和队列都是基于其他容器实现的,栈使用后进先出(LIFO)原则,队列使用先进先出(FIFO)原则。文章详细说明了它们的使用方法和模拟实现过程,重点分析了优先队列的堆实现机制及其通过仿函数控制大小堆的特性。最后简要介绍了双端队列(deque)的结构特点及其作为栈和队列底层容器的适用性。全文通过代码示例展示了这些容器适配器的具体实现与使用方法。

2025-10-31 23:59:11 253 3

原创 【C++】list 常见使用和模拟实现

本文详细介绍了C++ STL中list容器的使用和模拟实现。内容包括:list的基本概念(双向循环链表结构)、常用接口(插入、删除、遍历等)、特殊操作(splice、remove、unique等)。重点讲解了list迭代器的实现原理,包括普通迭代器和const迭代器的设计,以及通过模板参数优化代码复用。最后给出了完整的list模拟实现代码,包括节点结构、迭代器类、增删改查等核心功能。文章通过具体代码示例帮助读者深入理解list的底层实现机制,掌握其高效使用方式。

2025-10-25 21:48:53 872 2

原创 【Linux】理解Linux下的权限管理

本文系统介绍了Linux系统下的用户权限管理机制。主要内容包括:1)Linux用户分类(超级用户与普通用户)及切换方法;2)文件权限基础、属性查看与修改(chmod/chown指令);3)权限掩码的概念与计算方法;4)目录文件权限的特殊性;5)共享文件实现与粘滞位的作用。文章详细讲解了rwx权限对文件和目录的不同含义,以及如何通过权限掩码和粘滞位来控制文件访问权限,为理解Linux权限管理体系提供了全面指导。

2025-10-17 10:00:02 917 1

原创 【C++】vector 使用和实现

本文介绍了C++标准模板库(STL)中的vector容器及其使用与实现。主要内容包括:1. vector简介:动态数组容器,支持随机访问、动态扩容和元素增删;2. 基本使用:构造方法、迭代器遍历、空间管理(resize/reserve)和增删查改操作;3. 模拟实现:包括成员变量设计、核心功能实现和深浅拷贝问题;4. 常见问题:迭代器失效机制和构造函数重载问题。重点分析了vector的底层实现原理和注意事项,为理解和使用vector提供了全面的指导。

2025-09-28 23:39:58 1148 11

原创 【Linux】基本指令介绍

本文系统介绍了Linux操作系统的基本指令,包括30个常用命令及其选项。文章还讲解了Linux环境下的特殊操作如管道、重定向以及常用热键。通过详细的语法说明和具体示例,帮助初学者快速掌握Linux命令行操作,理解操作系统与用户交互的基本原理。最后简要介绍了shell作为命令行解释器的作用,为后续深入学习Linux系统打下基础

2025-09-19 21:15:57 1233 12

原创 【C++】string类 模拟实现

本文详细介绍了C++中string类的模拟实现过程。首先在命名空间MyTest中定义string类,包含构造函数、析构函数、访问遍历、扩容、增删改查等核心功能。重点讲解了深浅拷贝的区别及现代写法注意事项,分析了不同编译器下string类的存储机制差异,并简要介绍了写时拷贝技术。文章通过具体代码示例展示了各个成员函数和非成员函数的实现细节,包括运算符重载、迭代器设计等,帮助读者深入理解string类的底层实现原理。最后指出不同平台下字符串存储方式的差异,为C++学习者提供了有价值的参考。

2025-09-12 15:51:36 1151 7

原创 【C++】string类 - 库中的常见使用

本文介绍了C++标准模板库(STL)中的string类。首先概述了STL的发展历程和优缺点,然后重点讲解了string类的使用。文章从构造函数、容量操作、访问遍历、增删改查等方面详细介绍了string类的常见成员函数,如size()、resize()、push_back()、find()等,并提供了代码示例。同时介绍了string类的非成员函数,如运算符重载和getline()等。最后指出string类功能丰富,更多细节可参考C++官方文档。本文适合C++初学者了解string类的基本使用方法。

2025-09-09 22:50:23 1160 7

原创 【C++】运算符重载(日期类实现)

本文介绍了C++中运算符重载的概念与实现方法,以日期类为例详细讲解了常用运算符的重载过程。文章通过大量代码示例演示了如何为自定义类型建立与内置类型一致的运算符行为,提升代码可读性。

2025-09-05 10:09:27 913 4

原创 【C++】模板(初阶)--- 初步认识模板

本文介绍了C++模板的基本概念,以及对模板的初步认知,主要包含函数模板和类模板。文章通过交换函数和栈类示例,展示了模板如何解决代码冗余问题,并详细说明了模板的定义格式、实例化规则及类模板中成员函数声明与定义分离的注意事项。模板是C++泛型编程的基础,能有效提高代码开发效率。

2025-09-02 19:35:08 759 5

原创 【C++】动态内存管理(new/delete操作符)

本文介绍了C/C++程序的内存分布及C++的内存管理机制。主要内容包括:1. C/C++程序内存区域划分(栈、堆、数据段、代码段等);2. C++使用new/delete管理内存的方式,对比了与C语言malloc/free的区别,特别是对自定义类型会调用构造函数和析构函数;3. 深入解析了new/delete的底层实现原理,包括operator new/delete函数;4. 定位new表达式的使用场景;5. malloc/free与new/delete的区别;6. 内存泄漏的概念及危害。文章通过代码示例详

2025-09-01 21:48:45 966 3

原创 【C++】类和对象(终章)

本文介绍了C++类和对象相关的高级特性,主要包括:1. 构造函数的两种初始化方式(函数体赋值和初始化列表),以及explicit关键字;2. static成员的使用;3. 友元机制(友元函数和友元类)的突破封装;4. 内部类的定义和特性;5. 匿名对象的使用;6. 编译器在拷贝构造时的优化策略。文章通过代码示例详细说明了这些特性的使用方法和注意事项,对深入理解C++面向对象编程具有重要参考价值。

2025-08-30 23:15:11 732 2

原创 【C++】类和对象 --- 类中的6个默认成员函数

本文介绍了C++中类的6个默认成员函数的特性与使用。主要内容包括:1. 构造函数;2. 析构函数:;3. 拷贝构造函数;4. 赋值运算符重载;5. 取地址操作符重载:(1)包括普通和(2)const版本,通常使用默认实现。文章通过示例代码详细说明了各成员函数的特性和应用场景,特别是资源管理时的注意事项

2025-08-27 22:21:50 787 1

原创 【C++】认识类和对象

本文是关于类和对象入门基础认识。介绍了C++中类的基本概念、定义方式和特性。主要内容包括:1. 类的定义;2. 类的实例化和大小计算;3. this指针的原理与特性;4. 对比C语言和C++实现栈的差异,展示C++通过封装实现的代码简化优势。文章系统性地讲解了从类定义到对象使用的全过程,重点突出了C++面向对象编程中封装、this指针等核心概念的应用价值。

2025-08-22 13:20:55 842 1

原创 Linux环境搭建(xshell) -- 云服务器安装

本文介绍了Linux系统通过云服务器安装的环境搭建。详细讲解了云服务器的购买流程、Xshell远程终端软件的安装,以及如何使用Xshell连接Linux服务器。文章还说明了root账号与普通子账号的区别,包括子账号的创建、密码设置、重置和删除等操作。通过云服务器安装Linux既简单又经济,适合多人共享使用,是学习Linux系统的理想选择。

2025-08-18 21:40:46 1037 10

原创 【C++】入门篇

本文系统介绍了C++98标准中的关键语法特性,包括: 输入输出机制; 缺省参数的使用规范; 函数重载; 引用的本质; 内联函数; C++11新增特性:auto类型推导、范围for循环和nullptr空指针。内容涵盖从基础语法到高级特性的完整知识体系,通过代码示例详细解析各特性的实现原理和使用注意事项。

2025-08-14 01:27:40 927 4

原创 【C++】命名空间(namespace关键字)

本文介绍了C++中命名空间的namespace关键字的使用方法。主要内容包括:1. 命名空间的定义方式,包括常规定义、嵌套定义和多文件定义;2. 命名空间的三种使用方法:完全展开、作用域限定符和部分引入;3. 不同作用域(全局、局部和命名空间)中变量访问的优先级规则。

2025-08-10 01:12:23 1385 3

原创 【数据结构】排序(sort) -- 计数排序

本文介绍了计数排序的基本原理和实现方法。

2025-08-08 20:57:22 525 1

原创 【数据结构】排序(sort) -- 归并排序(merge sort)

本文介绍了归并排序算法的实现原理与方法。归并排序采用分治思想,通过递归或非递归方式将数据分解为最小单元后两两归并排序。文章详细讲解了递归实现的分解与合并过程。文中提供了递归和非递归两种版本,并针对非递归实现中的边界条件处理给出了解决方案。

2025-08-08 03:32:58 1369

原创 【数据结构】排序(sort) -- 交换排序(冒泡&快排)

本文介绍了两种交换排序算法——冒泡排序和快速排序。两种算法各具特点,其中快速排序综合性能更优,在实际应用中更常见。本文章重点详细介绍了快速排序的思想和实现:hoare、挖坑法和前后指针三种划分方法,随机选key和三数取中两种优化方案,以及快速排序的非递归实现。

2025-08-07 15:58:23 919 1

原创 【数据结构】排序(sort) -- 选择排序

本文介绍了两种典型的选择排序算法:简单选择排序和堆排序。文章详细阐述了两种算法的基本思想、实现思路、代码示例和特性对比,为理解选择排序提供了全面的参考。

2025-08-05 16:15:04 682

原创 【数据结构】排序(sort) -- 插入排序

本文介绍了插入排序的算法:直接插入排序和希尔排序。文中提供了两种算法的C语言实现代码及详细讲解。

2025-08-04 20:22:28 960

原创 【数据结构】二叉树(binary tree)

摘要:本文系统介绍了二叉树的基本概念、特性和实现方法。阐述了二叉树的定义,性质实现及其证明,然后讲解了三种特殊二叉树的结构特征。此外,详细说明了前序、中序、后序和层序四种遍历算法实现。提供了二叉树创建与销毁的实现。同时还介绍了结点、叶子结点个数、第k层结点的计数,查找值为x的结点等基本操作的递归算法。全文通过图文并茂的方式,全面展示了二叉树这一重要数据结构的关键知识点。

2025-08-04 03:02:08 1320

原创 【数据结构】树(tree)- 基础概念

本文介绍了树这种非线性数据结构的基本概念和术语。还有树的表示方法---最常用的孩子兄弟表示法。文章通过图示详细说明了各种术语概念,为理解树结构提供了基础认知。

2025-08-01 08:00:00 1203

原创 【数据结构】堆(heap)

堆是一种基于完全二叉树的数据结构,分为大根堆(父节点≥子节点)和小根堆(父节点≤子节点)。堆的核心操作包括:1. 向下调整算法(用于删除堆顶元素后调整堆结构);2. 向上调整算法(用于插入新元素后调整堆结构)。堆的典型应用包括堆排序和TOP-K问题。

2025-07-31 08:00:00 1082 1

原创 【链表】环形链表

本文详细分析了环形链表问题的解决方法。内容包括了:1. 环形链表结构特点。2. 判断链表是否有环的快慢指针法,并证明该方法相遇和不相遇的情况。3. 寻找环入口的两种方法:一是利用相遇点到环入口距离等于头结点到环入口距离的结论;二是将问题转化为求两个链表的交点问题。文章提供了完整的代码实现和详细的数学证明过程,为环形链表问题提供了系统的解决方案。

2025-07-25 08:00:00 1639

原创 【数据结构】线性表概括

概括线性表中的各个结构:顺序表、链表;栈、队列。

2025-07-23 10:51:08 729

原创 【数据结构】队列(queue)

队列的顺序存储结构和链接存储结构的实现。分别采用了循环队列和链队列进行实现。包含初始化,判空,入队,出队等队列的基本操作实现。

2025-07-22 09:00:00 871

原创 【数据结构】栈(stack)

对于数据结构中关于栈的理解,栈包含顺序栈和链栈,文章实现了顺序栈(动态)和链栈。顺序栈(动态)采用了动态顺序表实现;链栈采用了无哨兵头结点的单链表实现。

2025-07-19 23:29:44 1033

原创 【数据结构】链表(linked list)

介绍链表相关的重要知识,详细介绍了简单的链表:无头非循环单链表 和 复杂的链表:有头循环双链表的实现与解释。

2025-07-17 17:51:04 1053

原创 【数据结构】顺序表(sequential list)

介绍顺序表的实现操作,顺序表包含静态顺序表和动态顺序表。

2025-07-10 19:21:12 1455

原创 【数据结构】复杂度分析

时间复杂度与空间复杂度的分析理解

2025-07-08 19:49:18 643

原创 【指针(4)-- 深入理解指针】

介绍一些指针使用:字符指针、数组指针、函数指针、函数指针数组

2025-07-03 16:01:14 799

原创 【指针(3)-- 数组与指针】

介绍数组与指针之间的联系。包括详细介绍了一维数组的数组名是理解,指针访问数组,以及一维数组传参的本质,也有二级指针的介绍,指针数组的介绍。

2025-04-17 09:00:00 943

原创 理解传值与传址的区别

详细讲述在C语言中使用函数时传值调用与传址调用的区别

2025-03-26 15:01:47 1140 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除