自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ 异常详解

include <stdexcept> // 包含 std::runtime_error// 推荐:继承标准异常子类(而不是直接继承 exception)public:: std::runtime_error(msg) {} // 调用基类构造// 使用int main()tryconnect();// 输出自定义消息💡为什么不直接继承?因为的what()默认只返回空字符串,你需要自己管理错误信息。而已经实现了带字符串的构造和what(),更方便,当然你要自己实现what。

2026-01-28 21:21:35 620 5

原创 C++ 11 新增特性(下)

欢迎来到我的频道码云链接。

2026-01-26 21:54:35 626 3

原创 C++11 新增特性(中)

欢迎来到我的频道码云链接。

2026-01-25 22:00:03 722 5

原创 C++11 新增特性(上)

欢迎来到我的频道码云链接。

2026-01-23 18:16:34 635 4

原创 ⽤哈希表封装unordered_map和unordered_set(C++模拟实现)

在阅读本章节前 请保证掌握以下知识 哈希表的实现&&unorderedmap和unorderedset的使用 同时确保自己熟练掌握map和set的封装(因为里面除了底层一个是红黑树一个是哈希表外 基本区别不大 所以很多冲突部分都不会详细解释 也不会一步一步推导的写 而是围绕成品代码解释为什么这么写)哈希表(C++详解版&&线性探测法、哈希桶的实现)C++ unordered_map和unordered_set的使用C++ set&&map的模拟实现。

2026-01-22 18:14:22 574 6

原创 哈希表(C++详解版&&线性探测法、哈希桶的实现)

欢迎来到我的频道专栏作家码云连接。

2026-01-21 17:13:19 706 2

原创 C++ set&&map的模拟实现

学习本章节 必须掌握 红黑树的实现和 set&&map 的基本使用详情可以参考小编写的【set的使用】【map的使用】【红黑树】

2026-01-08 17:39:13 1036 1

原创 C++ unordered_map和unordered_set的使用

的声明如下,Key就是底层关键字的类型默认要求Key支持转换为整形,如果不支持或者想按自己的需求走可以自行实现支持将Key转成整形的仿函数传给第二个模板参数默认要求Key支持比较相等,如果不支持或者想按自己的需求走可以自行实现支持将Key比较相等的仿函数传给第三个模板参数底层存储数据的内存是从空间配置器申请的,如果需要可以自己实现内存池,传给第四个参数。一般情况下,我们都不需要传后三个模板参数底层是用哈希桶实现,增删查平均效率是O1O(1)O1,迭代器遍历不再有序,为了跟set。

2026-01-07 15:25:59 701 1

原创 红黑树(C++实现)

特性说明作用定义一组命名的整型常量红黑树用途表示节点颜色(REDBLACK传统 enum简单但可能隐式转int,有命名冲突风险enum class类型安全、作用域隔离,C++ 推荐用法在红黑树实现中,使用enum(尤其是enum class)是标准且清晰的做法。

2026-01-03 15:08:27 994 1

原创 AVL树(C++详解版)

此处采用。

2025-12-30 15:03:54 614 1

原创 C++ map和multimap的使用

map的声明如下,Key就是map底层关键字的类型,T是map底层value的类型,set默认要求Key支持小于比较,如果不支持或者需要的话可以自行实现仿函数传给第二个模版参数,map底层存储数据的内存是从空间配置器申请的。一般情况下,我们都不需要传后两个模版参数。map底层是用红黑树实现,增删查改效率是OlogNO(logN)OlogN,迭代器遍历是走的中序,所以是按key有序顺序遍历的。map底层的红黑树节点中的数据,使用存储键值对数据。std::pair是 C++ 标准库。

2025-12-28 16:28:32 872 1

原创 C++ set和multiset的使用

本文介绍了C++中序列式容器和关联式容器的区别,重点讲解了关联式容器set的使用方法。序列式容器存储线性序列数据,而关联式容器(如set/map)基于非线性结构,通过关键字访问数据。set底层采用红黑树实现,具有自动排序和去重功能,其元素不可修改。文章详细说明了set的构造方法、迭代器使用、插入删除操作(insert/erase/emplace等),以及高效的find查找功能(O(logN)复杂度)。通过代码示例展示了set的基本操作和特性,强调了其与算法库函数的性能差异。

2025-12-13 14:21:30 782 3

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

场景2: 商场无人值守车库,入口进场时扫描车牌,记录车牌和入场时间,出口离场时,扫描车牌,查找入场时间,用当前时间-入场时间计算出停车时长,计算出停车费用,缴费后抬杆,车辆离场,删除入场时间和车牌。场景3: 统计一篇文章中单词出现的次数,读取一个单词,查找单词是否存在,不存在这个说明第一次出现,(单词加入树),单词存在,则++单词对应的次数。场景2: 检查一篇英文文章单词拼写是否正确,将词库中所有单词放入二叉搜索树,读取文章中的单词,查找是否在二叉搜索树中,不在则波浪线标红提示。

2025-12-08 21:03:21 1049 6

原创 C++ 多态详解

多态是一个继承关系下的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象优惠买票。

2025-12-04 23:35:56 842 4

原创 C++ 继承详解

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许我们在保持原有类特性的基础上进行扩展,增加方法(成员函数)和属性(成员变量),这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的函数层次的复用,继承是类设计层次的复用。下面我们看到没有继承之前我们设计了两个类Student和TeacherStudent和Teacher都有姓名/地址/电话/年龄等成员变量,都有identity。

2025-12-03 00:03:50 1068 3

原创 C++ 模版(进阶)(含array解析)

一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。比如说一个函数 他只有.h文件的声明 没有.cpp的实现 那么他就会有链接错误 下图是文件编译的全过程:在汇编语言中 其实调用函数的本质 就是call + 函数地址,而函数其实跟数组很像,我们在test.cpp中对于函数的申明其实我们是没有它的地址的。而函数的地址是在定义中不是声明中。在有些编译器中test.cpp文件中汇编语言会形成call (?的声明。

2025-12-01 20:50:27 615 4

原创 C++ priority_queue的使用和模拟实现(含仿函数和函数对象的解析)

C++查询文档请转跳优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素 中最大的。此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶 部的元素)。优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器类,queue 提供一组特定的成员函数来访问其元素。元素从特定容器的“尾部”弹出,其称为优先队列的 顶部。

2025-11-29 20:24:16 741 5

原创 C++ stack和queue的使用和模拟(含deque容器的底层解析)

适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设 计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。在 C++ STL 中,容器适配器是一种特殊的容器,它不直接管理数据,而是通过“包装”一个已有的基础容器(如std::liststd::deque),并提供一个受限的、特定的接口来适配其行为。复用现有容器的功能,通过限制其接口来满足特定的数据结构需求。简化接口:提供了更简单、更专注的接口,使代码更清晰、更易于理解和维护。例如,使用。

2025-11-26 21:47:45 1001 6

原创 Linux下的代码调试器-gdb /cgdb 使用

在 GDB 调试中,条件断点是一种特殊的断点,它不是简单地在指定位置暂停程序,而是仅当满足用户设定的条件时才触发暂停。这种断点能精准过滤无关的执行流程,聚焦到需要调试的场景,尤其适用于循环、分支等复杂逻辑的调试。执行时监视一个表达式(如变量)的值。如果监视的表达式在程序运行期间的值发生变化,GDB 会暂停程序的执行,并通知使用者。如果你有一些变量不应该修改,但是你怀疑它修改导致了问题,你可以wtch它,如果变化了,就会通知你.虽然说可执行程序是二进制文件,但是内部的二进制是有自己的特定格式的类似于。

2025-11-22 20:55:38 965 6

原创 Linux 下的版本控制器Git

Git通过 “

2025-11-21 10:37:22 813 3

原创 Linux下的C语言系统小程序——进度条(附函数指针对代码解耦解析)

中的 缓冲区刷新函数,核心作用是 强制将标准 I/O 流(如 stdout、文件流)的缓冲区数据立即写入实际设备(终端、文件等),避免数据因缓冲区机制延迟输出 / 写入。函数指针的核心价值是「解耦代码、动态扩展」,适合需要灵活切换函数实现、隐藏底层细节、统一接口的场景 —— 这些场景下,函数指针能大幅降低代码修改成本,提升扩展性。Linux下一切皆文件,你的显示设备也可以理解是文件一种 属于IO流中的输出流,缓冲区是有归属的,很显然 这片缓冲区里的数据就归属于显示器(

2025-11-19 20:57:47 1068 2

原创 Linux下的项目自动化构建-make\makefile详解

自动变量核心含义关键特点适用场景$<指代第一个依赖文件只取依赖列表的「第一个」,忽略后续所有依赖1. 隐式规则(如.c→.o编译);2. 核心依赖明确的场景(如链接时只需要第一个.o触发)$^指代所有依赖文件(自动去重)包含依赖列表中所有文件,重复依赖会合并1. 链接多个.o文件生成可执行程序;2. 需用到所有依赖的场景(如打包、多文件编译)

2025-11-11 22:55:50 923 7

原创 Linux下的编译器gcc/g++

前提知识:保护宏能生效,关键在于 #define XXX 定义的宏是 全局有效的(在预处理阶段,宏的作用域是 “整个编译单元”,即单个 .cpp 文件及其所有包含的头文件 宏定义只会生效一次)。//头文件#ifndef MYMATH_H // 步骤1:判断宏是否未定义#define MYMATH_H // 步骤2:若未定义,定义该宏// 核心内容(声明)int y;#endif // 步骤3:结束条件判断//源文件#include "mymath.h" // 第一次包含。

2025-11-09 18:59:22 1024 5

原创 Linux下的软件包管理器&&vim编辑器详解与配置

在Linux下安装软件,一个通常的办法是下载到程序的源代码,并进行编译,得到可执行程序.但是这样太麻烦了,于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装.软件包和软件包管理器,就好比 “App” 和 “应用商店” 这样的关系.

2025-11-08 20:44:52 866 4

原创 C++ list容器的解析和使用(包含模拟实现)

list本质是一个双向链表 而链表的详细解析请移步我的另一篇文章单链表的实现。

2025-10-28 15:03:35 1109 4

原创 Linux权限管理

所以说只有普通用户才会受到权限的约束,而特权阶级不受到权限约束,权限是对普通人的约束!

2025-10-20 23:08:18 766 3

原创 C++ vector容器的解析和使用

v2.end())这么写是错误的 因为没有重载流插入//这么写也可以++it2;cout<<endl;//当然肯定是范围for更香一点 c++11//c++17 新出的语法糖 当容器是结构的时候就可以这么用//取aa1的成员依次进行赋值for(auto[x,y] :v2)//结构化绑定for(auto&[x,y] :v2)//不想有拷贝构造函数。

2025-10-18 20:42:49 1159 5

原创 初识Linux和Linux基础指令详细解析及shell的运行原理

拷贝的时候不光内容拷贝进去 更是把 属性也基本拷进去了。

2025-10-10 21:45:53 1123 5

原创 C++ string类(超详细讲解+2w字大章含string的模拟实现)

在使用string类时,必须包含#include头文件以及using namespace std解释(1) 空字符串构造函数(默认构造函数)构造一个空字符串,长度为零个字符。(2) 拷贝构造函数构造str的一个副本。(3) 子字符串构造函数复制str中从字符位置pos开始、长度为len的字符部分(如果str太短或len为string::npos,则复制到str末尾)。(4) 从C字符串构造复制由s指向的以空字符结尾的字符序列(C字符串)。(5) 从缓冲区构造从s指向的字符数组中复制前n个字符。

2025-09-10 19:50:42 564 6

原创 C++ 模板(初阶)

模版本质:将我们本来需要做的事情 交给编译器 让我们更加轻松 但实际生成的东西没有少 本质是帮你生成多个函数或者多个类。求三连!!

2025-09-04 20:22:30 755 4

原创 C/C++内存管理

函数参数形式初始化主要用途malloc字节数(如100不初始化快速分配未初始化的内存calloc元素个数 + 每个元素大小初始化为 0分配需要清零的数组/结构体等realloc原指针 + 新总字节数新增部分不初始化调整已分配内存的大小//new/delete 和 malloc/free最大区别是 new/delete 对于自定义类型除了会开空间还会调用构造函数//调用构造函数delete p1;//调用析构函数//调用构造函数//调用析构函数深层次应用//拷贝构造。

2025-09-02 21:22:16 1011 1

原创 C++ 类和对象(下)

必须放在初始化列表位置进行初始化,否则会编译报错。

2025-08-31 16:54:57 1026 4

原创 C++ 类和对象(中)

显式初始化新对象;函数传参(值传递);函数返回对象(值返回)。若未显式定义拷贝构造函数,编译器会生成默认拷贝构造函数(浅拷贝),但涉及动态内存管理时需手动实现(深拷贝),避免内存问题。

2025-08-28 09:19:26 978 5

原创 C++ 类和对象 (上)

C++类与对象基础概念解析 摘要:本文介绍了C++中类与对象的基本概念。类通过class关键字定义,包含成员变量和函数,使用访问限定符(public/protected/private)控制访问权限。类定义形成一个独立的作用域,成员函数在类外定义需使用作用域操作符::。类只是抽象模板,通过实例化创建实际占用内存的对象。对象大小仅包含成员变量,采用内存对齐规则计算,不包含成员函数指针。空类对象占1字节以区分不同实例。结构体struct在C++中也可定义类,默认访问权限为public,而class默认为priv

2025-08-23 14:42:00 1058 6

原创 C++ 入门基础篇(结合汇编和代码编译连接底层的深度解析版)

1.定义命名空间,需要使用到 namespace 关键字,后面跟命名空间的名字,然后接一对 {} 即可,{} 中即为命名空间的成员。命名空间中可以定义变量 / 函数 / 类型等。2.namespace 本质是定义出一个域,这个域跟全局域各自独立,不同的域可以定义同名变量,所以上面的 rand 不在冲突了。。3.C++ 中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找一个变量 / 函数 / 类型出处 (声明或定义) 的逻辑,所有有了域隔离,名字冲突就解决了。

2025-08-22 14:13:22 1036 3

原创 链式二叉树详解(包含4种遍历和一些常用功能&&C语言详解版&& 万字大章)

用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。 通常的方法是链表中每个结点由三个域组数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址,其结构如下:1.2 二叉树结点形式的拓展其实 二叉树结点不光存在三域二叉树结点(二叉链),同时还存在四域二叉树结点(三叉链),而多出来的结点就是parent的结点,指向的是其父亲结点:二叉树的创建方式比较复杂,为了更好的步入到二叉树内容中,我们先手动创建一棵链式二叉树最终我们将成功创造出这样的一棵二叉树回顾二叉树的概念,二叉树

2025-06-27 18:24:30 830 2

原创 树的概念详解、堆的实现、堆排序和堆的top-k问题(万字大章,C语言详解版)

孩子结点-1)/ 2=父结点 , 2父结点+1=左孩子结点, 2父结点+2=右孩子结点int size;//元素个数//可以容纳元素的大小。

2025-06-15 17:47:38 1266 2

原创 队列的实现(C语言详解版)

概念:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头。

2025-05-21 21:38:58 817 1

原创 栈的实现(C语言详解版)

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。栈是一个一种后进先出的一种数据结构。

2025-05-21 11:08:30 1155 2

原创 单链表的实现(C语言超详解版)

/方便存储数据类型的删改//存储的数据//指向下一个节点的指针制作不易 给个三连 阿里嘎多!!

2025-05-05 15:09:54 632 3

空空如也

空空如也

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

TA关注的人

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