自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 封装红黑树模拟实现map和set

map是key/value的搜索场景,set是key的搜索场景,这两个容器的底层,竟然是一致的,这是为什么呢,其实底层的红黑树用了一个巧妙的泛型思想来实现的,红黑树在实现key和key/value的搜索场景时不是写死的,而是由红黑树的第二个模板参数决定结点中存储的数据类型,若红黑树的第二个模板参数传的是key,那就是set的搜索场景,若是键值对,也就是pair<k,v>,那么就是key/value的搜索场景,这样既可以实现key搜索,场景的set,也可以实现key/value场景的map。

2025-03-28 20:35:01 1195 11

原创 C++红黑树实现

红黑树的概念:红黑树是一棵二叉搜索树,他的每个结点增加一个存储位来表示结点的颜色,但颜色只能是红色或者黑色。它是通过约束任何一条从根到叶子结点上的颜色来控制平衡的,这样就会确保没有一条路径会比其他路径长出两倍,因而红黑树接近平衡结点颜色只能是红色或者黑色根结点必须是黑色若一个结点是红色,那么它左右孩子的结点只能是黑色,换句话说就是,不能有连续的红色结点(注:若红色结点的孩子结点为空,那么该“空叶子结点”也是黑色的对于任意一个结点,从该结点到其他所有空结点的简单路径上,均包含相同数量的黑色结点。

2025-03-23 11:17:42 1208 13

原创 C++异常

上面的代码分析,当调用func函数,输入值,然后调用Divide函数,若b为0时,就会抛出一个异常,上述代码中抛出是一个string对象,那由哪个catch来捕获呢,是Divide函数中的catch来捕获吗,不是的,根据C++的捕获规则,是由与抛出对象类型匹配以及是离抛出异常位置最近的catch来捕获,那么上面的代码中,符合规则的只有main函数中的catch。重新抛出异常,有时候不是为了对异常进行处理,可能是先捕获下来,对一些开辟的空间进行释放,或者特殊的情况先进行处理,处理完之后再重新抛出异常。

2025-03-17 10:17:30 773 10

原创 AVL树的介绍及实现

AVL树的插入,查找即如何判断一棵树是否是AVL树

2025-03-08 16:50:34 762 13

原创 map和set的使用

set是一个关联式容器,关联式容器逻辑结构通常是非线性结构,两个位置之间右紧密的联系,交换一下,它的存储结构就被破坏。set的底层是红黑树,红黑是是一棵平衡的二叉搜索树,set是key搜索场景的结构set声明的结构如下图:第一个模板参数为关键字的类型,也就是key的类型第二个模板参数是仿函数,用来控制关键字的比较方式,这里默认支持小于的比较方式,若不满足自己的需求,可自己实现一个仿函数。

2025-03-04 14:23:42 1324 8

原创 二叉搜索树

二叉搜索树的概念及简单实现

2025-02-28 13:16:33 1098 4

原创 C++ 多态

多态的实现及原理

2025-02-26 13:51:39 5973 5

原创 继承

概念:继承是面向对象的三大特性之一。继承在现实生活中的说法就是继承了家里的家产,继承了家里的家业,从长辈那直接得到,而在C++中则是解决一些复用的问题,内层次的复用,它允许我们在保持原有类特性的基础上进行拓展,增加一些成员变量或成员函数,产生新的类,该种类就叫派生类。一句概括就是继承是类设计层次的复用。

2024-12-10 16:53:08 1149 11

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

const成员、取地址运算符重载、初始化列表、类型转换、static成员、友元、内部类、匿名对象、

2024-09-22 18:52:53 1016 18

原创 C++ 日历计算器的实现

日期天数计算器!!

2024-09-07 17:52:53 1231 7

原创 类和对象(中)

构造函数、析构函数、拷贝构造、运算符重载

2024-09-06 20:23:38 1152 7

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

类的定义及访问限定符,类域,类的实例化,对象的大小,this指针

2024-08-08 21:13:09 953 3

原创 C++ 基础入门篇

命名空间,输入输出,缺省参数,函数重载,引用,内联函数

2024-08-05 14:00:46 962 7

原创 栈和队列的实现

栈和队列的插入和删除的实现

2024-07-20 23:40:52 357 4

原创 算法(删除数组元素,删除有序数组中的重复项,合并有序数组)

算法的详细思路

2024-07-12 12:45:47 802 4

原创 顺序表的实现(尾插数据)!!

顺序表的介绍和实现,以及运用顺序表来进行尾插的实现

2024-07-12 00:42:28 1019 3

原创 C# C语言中对文件的使用(小白必看!!!)

文件的打开方式,文件的顺序读写,文件的随机读写

2024-06-07 13:01:41 1320 5

原创 C# 认识结构体,结构体的对齐规则及使用(详解!详解!)

结构体创建,初始化,和结构体数组的打印,结构体的对齐规则,计算结构体大小

2024-05-25 22:01:23 1605 1

原创 C# 整型数据,浮点型数据在内存中的存储形式(基础要领)

原码 反码 补码 以及浮点型的存储方式

2024-05-21 22:59:34 1287 1

原创 C# 函数memcpy和memmove的使用和模拟实现(详解)

memcpy函数和memmove函数的教学,以及它们的模拟实现

2024-05-18 17:49:43 1711

原创 C# 指针详解(下)

指针访问数组,数组指针与指针数组的区别,函数指针

2024-05-16 20:07:47 532

原创 C# 指针详解(上)

关于指针的加减整数和定义以及一些相关要点

2024-05-15 22:37:37 1469 1

原创 C# 教你如何“自定义冒泡排序”(该排序可应用于任意类型的数据)

自定义一个能排序任意类型数据的函数

2024-05-12 12:58:30 467 1

原创 C# qsort函数教学

学习qsort函数,用qsort函数实现对整型数组和结构体数组,字符串数组的排序

2024-05-11 14:01:57 548

原创 C# 告诉你什么是回调函数

函数指针,回调函数,用回调函数来实现转移表

2024-05-10 22:19:26 830

原创 c# 二分查找(折半查找)详细解说

二分查找详细解说

2024-05-07 17:28:23 588 2

原创 #C 函数递归

这个例子其实是一个错误的示范,会导致这个函数无限递归下去,无限递归会出现栈溢出的错误,因为每一次调用函数,都要为这一次函数的调用分配内存空间,二内存的空间是在栈区上分配的,所以会出现栈溢出(stack overflow)的错误。上面的图片清楚的展示函数是如何将递归的,就是将实数不断的递推出去,然后将返回值不断的归回来,最后得出最终的返回值。函数递归一定要满足上述两个条件,没有条件就会出现栈溢出,空间不足的错误,就如我上面举到的例子。它的递归条件就是当n=0时,停止对函数的调用,返回值为1.

2024-04-27 20:37:52 367

原创 c# 循环结构 break和continue的用法

从这个代码可以说明,当i为4时if条件为真,执行break语句,而printf语句和i++语句将不会执行,且while循环体终止,输出的结果就为1 2 3,这个语句相对来说也是很好理解的,其实break翻译过来也就是"打断"的意思嘛,打断两人之间的对话,打断循环体,是一个非常常用的语句。首先,1赋值给了i所以满足i<=5的表达式所以为真,i为1被打印了出来,之后i++使i=2又满足表达式2<5,i为2被打印了出来,以此类推,直到i>5,表达式为假,结束了循环。break的作用就是终止循环,直接跳出循环体。

2024-04-14 12:06:38 905

原创 C# 分支结构

通俗的来讲,表达式就相当于一把可以变换数字的钥匙,case1和case2还有default就相当于门,如果钥匙变化成了数字1这把钥匙就可以开case1的门,如果不是数字1也不是数字2这把钥匙就可以开default的门,这些门就相当于多个结果。当然case的个数是由问题本身决定的,可以有很多个,defualt可以有也可以没有,也是根据问题来决定的。需要注意的是,switch后面的表达式必须是整型的,case后面必须是整型常量。当i%3为1时,程序就会自动跳到case为1的语句中,输出余数是1。

2024-04-14 12:05:38 316

空空如也

空空如也

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

TA关注的人

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