自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Effective C++_异常(解剖挖掘)

异常处理机制允许我们程序中的独立开发的模块能够在运行时就把程序出现的问题进行及时通信并做出相应的解决处理,异常使得我们能够将问题的检测与解决问题的过程分开,程序的⼀部分模块负责检测问题,然后解决问题的任务则传递给程序的另⼀模块,检测环节无须知道问题的处理模块的所有相关问题细节。另外,在析构函数中,如果抛出异常也要谨慎处理,比如在析构函数中原本要释放十个我们动态申请的资源,但是代码在执行时,释放到第五个资源时就抛出了异常,那么这里也需要捕获处理,否则后面的五个资源就没有释放,就导致资源泄漏了。

2025-12-27 10:59:26 924

原创 C++11(学习C++11,看这一篇就够了)

之前我们学习的大多都是C++中的STL容器,而我们今天要学的则是关于C++的版本内容——C++11。不管对于现在的你是小白还是大神,对于整个C++板块来说,C++11都是我们所必须学习的内容!!!C++11 是 C++ 的第⼆个主要版本,并且是从 C++98 以来的最重要的版本更新。它对于C++引⼊了⼤量更改,增加了很多新的特性,并改进了对 C++ 程序员可用的抽象类型。在它最终由 ISO 在 2011 年 8 ⽉ 12 日采纳前,⼈们曾称它为“C++0x”,因为它曾被期待在 2010 年之前发布。从C++

2025-12-21 10:34:05 828

原创 C++_unordered_map_set的封装(精简详略版)

但是SGI-STL30实现了哈希表,只是容器的名字是hash_map和hash_set,他是作为非标准的容器出现的,非标准是指非C++标准规定必须实现的,源代码在hash_map/hash_set/stl_hash_map/stl_hash_set/stl_hashtable.h中,hash_map和hash_set的实现结构框架核心部分截取出来如下。则结点的指针指向下⼀个结点即可。③ 其次跟map和set相比而言unordered_map和unordered_set的模拟实现的类结构更复杂⼀点,但是。

2025-12-14 10:57:04 519

原创 Linux从入门到精通——基础开发工具(破译解析版)

gcc是只能用来编译C语言的编译器;g++是既能编译C语言也能编译C++的编译器。

2025-12-07 10:03:19 547

原创 深入理解哈希表(万能之法)

当key是string/Date等类型时,key不能直接取模,那么我们需要给HashTable增加⼀个仿函数,这个仿函数支持把key转换成⼀个可以取模的整数,如果key可以转换为整数并且不容易冲突,那么这个仿函数就⽤默认参数即可,如果这个Key不能转换为整形,我们就需要自己实现⼀个仿函数传给这个参数,实现这个仿函数的要求就是尽量key的每个值都参与到计算中,让不同的key转换出的整型值不同。, M − 1},因为负载因子小于1,则最多探测M-1次,就⼀定能找到⼀个存储key的位置。这种方法叫做全域散列法。

2025-11-29 10:36:31 587

原创 C++_unordered_map_set(无懈可击版)

① unordered_set的声明中,unordered_set字面上就是一个无序集,是存储唯一元素且无特定顺序的容器,允许基于其值快速检索单个元素,Key就是unordered_set底层关键字的类型。② unordered_set默认要求Key支持转换为整形,如果不支持或者想按自己的需求走可以自行实现⽀持将Key转成整形的仿函数传给第⼆个模板参数。③ unordered_set默认要求Key⽀持比较相等,如果不⽀持或者想按自己的需求⾛可以自行实现⽀持。

2025-11-23 10:11:04 763

原创 红黑树进阶封装实现C++_map_set(源码剖析)

如下图:当it指向50时,++it时,50是40的右孩子,40是30的右孩子,30是18的右孩子,18是根节点,没有⽗亲,所以没有找到孩⼦是⽗亲左孩子的那个祖先,这时⽗亲为空了,那我们就把it中的结点指针置为nullptr,我们⽤nullptr去充当end()。⑦ 如果当前结点是⽗亲的右孩子,当前当前结点所在的⼦树访问完了,当前结点所在⽗亲的⼦树也访问完了,那么下⼀个要访问的节点需要继续往根的祖先中去查找,直到找到孩⼦是⽗亲的左孩子的那个祖先就是中序遍历要访问的下⼀个结点。

2025-11-15 10:12:04 957

原创 Linux从入门到精通——基础指令篇(耐人寻味)

这里有一个问题,是不是只要用户拥有目录的W权限,那么他就能删除这个目录中的文件,那如果用户1在一个对所有其他用户都具有W权限的目录下创建一个对其他用户没有任何权限的文件,那么其他用户对这个不能读,不能写,那他就把这个文件删除了,这合理吗?我们平常所说的Linux严格意义上说的是⼀个操作系统,我们称之为“Linux内核“ ,但我们⼀般用户,不能直接和内核交互。:粘滞位t是给other用户提供的一种权限管理级别,在指定的t目录下,每个用户在删除文件时,只能删除自己创建的文件,这种场景一般用于文件共享的场合!

2025-09-28 21:51:54 1011

原创 五分钟理解C++_红黑树(从原理到实现)

红⿊树通过4条规则的颜⾊约束来控制最长路径和最短路径,间接的实现了近似平衡,它们的效率都是同⼀量级,但是相对⽽⾔,插⼊相同数量的结点,红⿊树的旋转次数是更少的。这是需要我们进⼀步分析,由于c是红⾊,p为红色,那么g必为⿊色,所以这三个节点的颜⾊都固定了,关键的变化是看u的情况,接下来就让我们来分析u的变化。当于保持g所在⼦树的⿊⾊结点的数量不变,同时解决了c和p连续红⾊结点的问题,需要继续往上更新是因为,g是红⾊,如果g的⽗亲还是红⾊,那么就还需要继续处理;分析:p必须变⿊,才能解决连续红⾊结点的问题。

2025-09-28 12:53:17 701

原创 C++_AVL树(深度学习)

③ 旋转核⼼步骤:因为10 < b⼦树所有结点的值 < 15,将b变成10的右⼦树,10变成15的左⼦树,15变成这棵树新的根,符合搜索树的规则,控制了平衡,同时这棵树的⾼度恢复到了插⼊之前的h+2,符合旋转原则。① 更新后parent的平衡因⼦等于0,则此次更新中parent的平衡因⼦的变化为-1->0 或者 1->0,说明更新前parent⼦树是⼀边⾼⼀边低的状态,新增的结点插⼊在低的那边,这种情况插⼊后parent所在的⼦树⾼度不变,不会影响parent的⽗亲结点的平衡因⼦,更新结束。

2025-09-27 14:09:25 728

原创 C++_map_set(深度讲解)

1. set 的声明① set的声明中,T就是set底层关键字key的类型。② set默认要求T⽀持小于比较,如果不⽀持或者不满足自己的需求可以自行实现仿函数传给第⼆个模板参数。③ set底层存储数据的内存是从空间配置器申请的,如果有特殊需求可以自己实现内存池,传给第三个模板参数。④ set底层是⽤红⿊树实现,增删查的效率是O(logN) ,迭代器遍历是二叉搜索树的中序,所以是有序的。2set 的构造、修改和遍历1//set//set会按中序排序(默认升序),还会去重。

2025-09-23 18:07:17 928

原创 C++_二叉搜索树(深度剖析)

场景2:商场⽆⼈值班⻋库,⼊⼝进场时扫描⻋牌,记录⻋牌和⼊场时间,出⼝离场时,扫描⻋牌,查找⼊场时间,⽤当前时间-⼊场时间计算出停⻋时⻓,再乘以单价计算出停⻋费⽤,缴费后抬杆,⻋辆离场,删除车牌号和对应入场时间。如果⽀持插⼊相等的值,则插⼊值跟当前结点相等的值可以往右子树⾛,也可以往左子树⾛,找到空位置后,再插⼊新结点。场景1:⼩区⽆⼈值班的⻋库,只有买了小区车库的⻋位的业主⻋才能进⼩区,那么物业会把买了⻋位的业主的⻋牌号录⼊后台系统,⻋辆进⼊时扫描⻋牌号在不在系统中,在则允许进入小区,否则禁止进入小区。

2025-09-23 09:41:41 707

原创 C++之多态(从0到1的突破)

1.多态的构成条件多态是⼀个继承关系下的类对象,去调⽤同⼀函数,产⽣了不同的⾏为。实现多态还有两个必须重要条件① 必须是基类的指针或者引⽤调⽤虚函数。② 被调⽤的函数必须是虚函数,并且完成了虚函数重写/覆盖。原因:要实现多态,第⼀必须是基类的指针或引⽤,因为只有基类的指针或引⽤才能既指向基类对象⼜指向派⽣类对象;第⼆派⽣类必须对基类的虚函数完成重写/覆盖,重写或者覆盖了,基类和派⽣类之间才能有不同的函数,多态的不同形态效果才能达到。2. 虚函数。

2025-08-20 22:09:25 982 1

原创 C++之继承(万字详解)

public:{}{}protected:string _name = "张三";通过上面代码我们可以看到没有继承之前我们设计了两个类Student和Teacher,Student和Teacher都有姓名/地址/电话/年龄等成员变量,都有identity⾝份认证的成员函数,设计到两个类⾥⾯就是冗余的。

2025-08-20 14:17:24 654

原创 C++模板进阶(超易理解)

1. 模板优点① 模板对代码进行了复用,节省了资源,更快的迭代开发,C++的标准模板库(STL)因此而产生。② 增强了代码的灵活性。1. 模板缺点① 模板会导致代码膨胀问题,也会导致编译时间变长。② 出现模板编译错误时,错误信息非常凌乱,不易定位和修改错误。怎么样?怎么样?这一节好理解吧?我没骗你吧?我就说小博讲的超容易理解吧,快快关注吧!!!

2025-08-12 11:35:16 541

原创 C++_stack && queue (小白也能看懂!)

① stack是一种容器适配器,专门设计用于在。

2025-08-11 14:37:58 676

原创 C++_list(详解版)

list的定义:list就是我们之前学过的链表,本质是带头的双向循环链表。list的使用2.1list的构造① list (size_type n, const value_type& val =value_type()):用n个值为val的元素构造list。② list() : 构造一个空的list。③ list (const list& x) :拷贝构造函数。

2025-08-02 11:56:52 1131

原创 C++_vector(深度解析)

1.1vector的构造函数① vector(): 默认无参构造。② vector(size_type n, const value_type& val =value_type()):构造对象并用n个val初始化。③ vector(const vector& x):拷贝构造。使用迭代器进行初始化构造对象。//可不写,对象出了作用域会自动调用v1 = v2;1.2vector的迭代器。

2025-08-02 10:54:54 780

原创 C++_string(精讲版)

Hello!各位铁子们,好久不见!这次我们终于又见面了,从今天开始,我们就要进入到我们的容器的学习了,今天我们要学的是string!

2025-07-20 18:09:14 1204

原创 C++模板初阶

如果巅峰留不住,那便重走来时路!Hello!各位努力奋斗的铁子们,不得不说咱们最近的见面次数有点高了,主要是小博最近时间相对来说比较宽裕,这样也好,小博就能够和各位大佬一同进步了!!!那废话就不多说了,今天我们要一起探讨的是C++模板初阶的内容。

2025-07-20 18:07:08 454

原创 C++内存管理

int main()// new/delete 和 malloc/free最大区别是 new/delete对于自定义类型除了开空间//还会调用它的构造函数和析构函数free(a);delete a1;*///拷贝构造//匿名对象//类型转换//崩溃,因为显示写了析构,必须加[]delete n1;delete n2。

2025-06-29 15:04:32 394

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

Hello!各位优快云的小伙伴们,我们又又又又又叕见面了,今天我们要学习的是C++类和对象的第三部分,希望大家看完这篇文章后都能收获满满!

2025-06-27 20:36:15 972

原创 C++类和对象(二)---精讲版

默认成员函数就是⽤⼾没有显式实现,编译器⾃动⽣成的成员函数称为默认成员函数。⼀个类,我们不写的情况下编译器会默认⽣成以下6个默认成员函数,其次就是C++11以后还会增加两个默认成员函数,移动构造和移动赋值。① 构造函数:主要完成初始化工作。② 析构函数:主要完成清理工作。③拷贝构造函数:利用同类对象去初始化新创建的对象。④赋值重载函数:将一个对象赋值给另一个对象。⑤普通取地址运算符重载。⑥const取地址运算符重载。

2025-06-24 21:20:59 870

原创 C++之类和对象(一)

① class为定义类的关键字,Stack为类的名字,{}中的内容为类的主体,类定义结束时后⾯的分号不能省略。类的主体中的内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或者成员函数。② 为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_ 或者以m开头,当然这并不是强制的。

2025-06-01 19:19:17 631

原创 C++入门

Hello!各位铁子们,今天我们要学习的是C++入门相关的知识,C++作为当今世界的主流的编程语言之一,具有很大的优势和前景。今天我就带着大家一起进入C++的世界!

2025-05-18 19:32:02 589

原创 数据结构与算法---排序(超详细)

Hello!各位铁子们,我们叕见面了,今天我们进入到了一个新的算法世界—排序。所谓排序,顾名思义,就是使一串记录按照记录中某个记录或某些记录的大小,递增(升序)或递减(降序)的顺序排列,从而成为一串有序的新记录。

2025-05-09 19:45:49 1086

原创 数据结构与算法---二叉树(精讲版)

哈喽!各位老铁们,不得不说咱们又叕见面了,今天我们要学习的是二叉树的链式结构。

2025-04-21 20:57:11 640

原创 数据结构与算法---堆

Hello!各位铁子们,我们叕见面了,今天我们要学的是是一种新的数据结构—堆,首先我们先来了解一下数这种数据结构!

2025-04-20 15:52:06 816

原创 数据结构与算法-------栈和队列(详解版)

栈和前面所说的顺序表以及链表一样,都是线性结构,但是栈只允许在栈的一端插入和删除数据,这一端称为栈顶,而另一端则称为栈底,栈在进出数据元素时遵守"后进先出"的原则。答案是用数组来实现更好,因为数组的末尾作为栈顶时插入数据比链表更优,且链表中一个节点的空间除了存储数据,还包含指向下一个节点的地址,所以使用链表来实现栈所耗费的空间相对较大。1.队列是一种只能在一端插入数据,在另一端删除数据的线性表,在进行数据插入和删除时遵循"先进先出"的原则,插入数据的一端叫做队尾,另一端用来删除数据,叫做队头。

2025-04-13 19:51:27 359

原创 数据结构与算法-----双向链表(超详细的解析)

所谓双向链表,就是在原单链表的基础上发展而来,这里我们虽说的双向链表就是指带头结点的双向循环链表,它有三个成员,一个是保存数据的数据域,一个是指向前一个节点的前向指针,一个是指向后一个节点的后继指针。

2025-04-12 15:41:46 190

原创 数据结构与算法----单链表

Hello!各位老铁咱们又又见面了,上次我们学了顺序表的相关知识,了解了顺序表的结构实现是数组,但是现在又出现了一些问题。对于顺序表来说:1.中间/头部的插⼊删除,时间复杂度为O(N)。2.增容需要申请新空间,拷⻉数据,释放旧空间。会有不⼩的消耗。3. 增容⼀般是呈2倍的增⻓,势必会有⼀定的空间浪费。思考:那么如何解决以上问题呢?接下来我就和大家一起来学习我们今天的内容—单链表!

2025-04-11 12:51:10 275

原创 数据结构与算法------顺序表

*3.*顺序表是⽤⼀段物理地址连续的存储单元依次存储数据元素的线性结构,⼀般情况下采⽤数组存储。顺序表在逻辑上是线性的,又由于顺序表的底层实现是数组,所以顺序表在物理结构上也是线性的。顺序表的底层结构是数组,它是对数组的封装,实现了常⽤的增删改查等接⼝。#*2.*顺序表是线性表的一种,而线性表(Linear list)是n个具有相同特性的数据元素的有限序列。#*5.*相信各位老铁们看到这里对顺序表这个数据结构已经有了一定了解,在之后的日子里我也会和大家共同努力,共同进步!(2)以下是代码实现。

2025-04-02 18:01:09 239

原创 【无标题】

我最近也是才学习编程不久,在我看来,要学好编程,必须先掌握一定的理论知识,然后将这些知识运用到代码中去,活学活用,一定要实操,自己动手去敲代码,只有这样学习效果才更显著。*4.*对于之后的就业来说,我将来想去腾讯,字节跳动,阿里巴巴这样的大公司上班,但这样的大厂大家肯定都知道不好进,这就需要我们不断壮大自身,提升自己的技术能力和水平,让我们的脚步不断向这些大厂迈进!*1.*作为一个编程初学者,相信许多初学者和我一样迷茫,最初都是从Hello world 过来的,不知道怎么入手。

2025-03-29 14:58:37 113

空空如也

空空如也

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

TA关注的人

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