自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++【红黑树】超详细画图分析

如果把旋转搞明白后,会发现红黑树的代码实现其实并不难,就分为两种大情况(1) 叔叔存在且为红(2) 叔叔不存在或叔叔存在且为黑第一种情况:变色加继续向上调整第二种情况:判断一下g, p, c的位置决定是什么旋转即可本篇文章是有很多画图分析的,大家可以自己结合着理解再画一下,总之就是,把逻辑捋顺之后再去写代码,否则代码可能这里改一下那里改一下,要调好久,不如先捋清思路,顺着思路写,那本篇文章就到这里了,我们下篇文章见!!!

2025-03-27 16:20:56 897

原创 C++ 【AVL树】 万字详解+画图分析

AVL树是较难的数据结构,它的效率也是比二叉搜索树有提高的,而且学了AVL的旋转后我们再学习红黑树的成本就下降了很多,如果大家有哪里没有看懂的,可以再自己画图结合去理解一下,对于这种数据结构来说,一定是画图最关键,我们把逻辑都分析清楚了后会发现其实代码并不难写,重要的是画图分析的过程,那本篇文章到这里就结束了,如果大家觉得小编写的不错,可以给三连支持下!!!

2025-03-24 15:35:52 643

原创 C++ 【二叉搜索树】

在讲完类和对象的基本知识后,我们讲了STL的模拟实现,去深入了解容器的底层,然后我们又讲了继承、多态这两大面向对象的特性,那本篇文章开始就又回到了数据结构部分,是结构更加复杂的树,那我们一起来看看吧!!

2025-02-28 18:57:45 819

原创 C++之多态详解

上一篇文章我们讲解了继承,那本篇文章来讲一下面向对象三大特性的最后一个,也就是多态,多态需要用到继承的知识,所以如果大家不知道继承或者说只是浅浅的知道一点,可以看看上一篇文章,先对继承有个大概的了解。多态是一个继承关系的下的类对象,去调用同⼀函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象优惠买票!!

2025-02-28 10:27:51 545

原创 C++之继承详解

之前的文章我们讲解了STL中一些基础容器的实现,然后把内存管理、模版这些也一直在用,相信大家对于他们的使用肯定是没有问题了,面向对象三大特性:封装、继承、多态,那本篇文章要来讲解的是继承,接下来就开始正题!!!继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许我们在保持原有类特性的基础上进行扩展,增加方法(成员函数)和属性(成员变量),这样产生新的类,称派生类,继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程,以前我们接触的函数层次的复用,继承是类设计层次的复用。

2025-02-26 13:34:22 579

原创 C++——模版(二)

我们之前说模版是不能声明与定义分离的,会报错,那我们就看看它报错的原因是什么,会什么会报错// func.hstruct Astruct Bint main()A<int> aa;B bb;return 0;

2025-02-23 19:00:13 710

原创 C++——priority_queue模拟实现

上一篇文章我们讲了stack和queue,这两个容器是容器适配器,本质上是一种复用,那本篇文章要讲的优先级队列也是一个容器适配器,我们一起来看看吧!通过文档可以看到,优先级队列也是一个容器适配器,它的底层是vector,但是除了这个适配器以外还有一个模版参数,这个模版参数是干什么的呢?

2025-02-22 18:18:57 1208

原创 C++——stack/queue模拟实现

上一篇文章我们讲了list,它的迭代器部分是最重要的,因为我们需要用一个自定义类型来去封装,那本篇文章我们讲一下栈和队列,栈和队列就不那么难了,因为大家也可以看到,它的接口只有那么几个,而且也没有迭代器,但也还是有一些新知识的,那我们就来一起看一下吧。

2025-02-22 13:03:25 811

原创 C++——list模拟实现

我们之前讲解了string和vector的模拟实现,它们都是类似于顺序表的结构,string的底层是一个指针,一个元素的数量,一个空间总容量,而vector的底层是三个指针,这是它们结构上不一样的地方,但是实现的方法和原理还是大差不差的,那本篇我们来谈谈list,list的迭代器和之前的容器是不一样的,而且是一个双向带头循环链表,任意位置的插入删除效率都是O(1),那我们开始正题!!

2025-02-21 19:29:57 864

原创 C++——vector模拟实现

上一篇文章我们讲了string的模拟实现,string的东西还是比较多的,因为确实设计的比较复杂,有很多冗余的接口,那vector就没有这么繁琐了,本篇文章就让我们来对vector揭个密把!!

2025-02-20 16:43:45 906

原创 C++——string模拟实现

本篇文章将要来讲述string的模拟实现,对于STL的容器,我们不仅要会用,还要了解他的底层所以我们有必要去模拟实现一下,那我们接下来就开始模拟实现啦!!

2025-02-19 12:57:27 604

原创 C++——模版(一)

前面的文章我们讲述了C++的内存管理方式,那本篇文章我们来讲一下C++中一个相当伟大的发明,也就是模拟,那我们就直接开始正题啦!templateclassT1classT2, ...,classTnclass类模板名// 类内成员定义下面用Stack类来举例子public:,_size(0){}private:T* _a;

2025-01-13 21:23:47 831

原创 C++——内存管理

之前的文章我们把类和对象都给讲述完了,本篇文章也是一个很重要的部分,就是我们的内存管理,知道内存中的各个区域,以及它们分别都存储什么,那我们就开始正文了!new的原理1. 调用operator new函数申请空间2. 在申请的空间上执行构造函数,完成对象的构造delete的原理1. 在空间上执行析构函数,完成对象中资源的清理工作2. 调用operator delete函数释放对象的空间new T[N]的原理。

2025-01-13 13:38:24 1010

原创 C++——类和对象(四)

之前我们讲解了类和对象的基本知识,也运用到了日期类的实践当中,让我们对这些知识有了更深的了解,没有看过的小伙伴快可以回去再看一眼哦,那本篇文章就继续来讲解类和对象的最后一点知识,那我们就先说到这里,下面开始正文。这里最重要的就是类型转换和编译器的优化,虽然每个编译器的优化是不一样的,但是他确实可以提高效率,剩下的知识就是以了解为主,到这里类和对象就结束啦,不过在STL部分还要持续的运用,所以有不懂的大家还是要在多看两遍哦!大家不要走开,小编持续更新中...

2025-01-12 21:31:19 913

原创 C++——类和对象应用 日期类实现

之前我们讲了类和对象的知识,以及默认成员函数和运算符重载,那本篇文章小编就来实现一下完整的日期类,把之前的知识运用起来吧!需要注意,本次实现的日期类采用了分文件的方式,test.cpp,Date.cpp,Date.h,日期类具体函数的实现都放在Date.cpp中,而成员函数默认就是内联函数,所以一些短小的函数可以直接放在Date.h中,test.cpp用来测试,那我们就强调到这里,接下来就开始具体实现了。

2025-01-11 12:52:10 956

原创 C++——类和对象(三) 默认成员函数之拷贝构造函数,赋值运算符重载函数

全部是内置类型且没有指向的资源时,如Date类,全部是自定义类型成员时,像MyQueue这样的类型内部是自定义类型Stack成员,编译器自动生成的拷贝构造会调用Stack的拷贝构造,也不需要我们显示实现 MyQueue的拷贝构造。这里还有一个小技巧,如果⼀个类显示实现了析构并释放资源,那么他就需要显示写拷贝构造,否则就不需要。来看MyQueue这个类public:_top = 0;

2025-01-10 23:39:21 776

原创 C++——类和对象(二) 默认成员函数之构造函数、析构函数

有两种情况,第一种就是刚才说的类中的成员变量都是自定义类型,第二个是在成员变量声明的位置给缺省值,这个缺省值也是给初始化列表的,全部是自定义类型的情况我们说完了,现在来看一下给缺省值,这里建议大家看完下面的初始化列表再回来理解一遍,会有不一样的收货哦class Datepublic:private:int main()Date d1;d1.Print();return 0;是在成员变量声明的地方给缺省值class Datepublic:_day = day;

2025-01-10 14:14:05 1086

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

class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员类中的变量称为类的属性或成员变量, 类中的函数称为类的方法或者成员函数。为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前面或者后面加_ 或者 m开头,注意C++中这个并不是强制的,只是一些个人习惯。C++中struct也可以定义类,C++兼容C中struct的用法,同时struct升级成了类,明显的变化是。

2025-01-09 17:46:56 599

原创 C++——入门小知识

ST;return 0;这样就做到了自己控制,如果知道需要开多大的空间,就传参,一次性开好,如果不知道,那就用缺省参数,函数声明和定义分离时,不可以同时给缺省值是因为如果两边给的缺省值不一样编译器不知道听谁的,所以要就只用在声明给缺省值就可以了。//编译报错,ra必须初始化引用int& ra;return 0;

2025-01-09 13:19:50 880

原创 C++——命名空间

命名空间使用namaspace关键字,后面跟上命名空间的名称,紧接着一对{}即可,在花括号中可以定义变量,类型,函数等namespace本质是定义出⼀个域,这个域跟全局域各自独立,不同的域可以定义同名变量,所以下面的rand不在冲突了。C++中的域有局部域,全局域,命名空间域,类域,域影响的是编译器的查找规则,所以有了域隔离,命名冲突问题就解决了,除此之外,局部域和全局域会影响生命周期,命名空间域和类域不会影响生命周期。在默认情况下,编译器的查找规则是从局部域开始查找,

2024-11-12 10:57:12 976

原创 C语言——指针(二)

我们今天将从上一篇的基础上继续来学习指针(序号也是连续的)

2024-08-21 15:49:10 986

原创 C语言——指针(一)

相信很多朋友在学习指针的时候都是一个难题,包括平时在学校里老师也会说指针是C语言中最难的部分,理解了指针也就理解了C语言,那接下来这篇文章绝对可以让大家对指针的理解提高一个档次,不懂的朋友可要好好看看咯!!!

2024-08-19 15:47:23 671

空空如也

空空如也

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

TA关注的人

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