- 博客(42)
- 收藏
- 关注
原创 用一个哈希表同时封装出unordered_map和unordered_set
我们这边介绍了如何重哈希表只能存pair<K,V>开始到能存Key类型和pair<Key,Value>。以及介绍了string类型无法取模的问题,并且我们添加了哈希表中默认的成员函数,已经对哈希表添加了插入,查找,删除的功能。我们后续又重点介绍了迭代器如果使用,这里的迭代器即使重点也是难点,大家一定要认真看。最后如果是小比特的同学,这里我建议先跟着杭哥把代码打一遍,因为这里其实的难度其实就是参数列表,用一个哈希表的模板来构造出unordered_set和unordered_map,其实就是封装的比较厉害
2025-03-31 18:06:22
965
原创 哈希表、哈希桶实现
本文介绍了哈希的概念以及哈希冲突和哈希函数,以及说明了如果遇到了哈希冲突的2种解决方法,第一个是闭散列(开放定址法)和开散列(哈希桶),我这边都对这两个方法进行了详细的介绍,以及对这两个方法模拟实现了插入,查找,删除
2025-03-31 18:06:14
1517
原创 用一颗红黑树同时封装出map和set
首先本文是对之前写过的红黑树进行修改,因为之前的红黑树只能存键值对,而现在我们是让set和map都能复用红黑树,所以我们这里介绍了如何修改红黑树中的模板参数已经增加了仿函数用来获取键值,后续我重点书写了迭代器的使用,这里非常重要,希望大家读完都能有所收获
2025-03-24 17:21:14
1338
原创 红黑树(C++实现)
本文介绍了红黑树是概念与性质,但重点还是讲解了红黑树插入会面临的3中情况,及其对应的修改规则,最后还说了如何验证和查找红黑树中的某一节点,以及简单说明了红黑树与AVL树的区别
2025-03-24 17:21:04
320
原创 AVL(平衡二叉树)
本文详细介绍了AVL树的基本概念、节点定义、插入操作、旋转类型(左单旋、右单旋、左右双旋、右左双旋)以及旋转后的平衡因子更新。此外,还讨论了AVL树的验证方法、查找操作和修改操作。最后,分析了AVL树的性能优势在于高效的查询速度,但在频繁修改结构时性能下降。
2025-03-24 17:20:53
1319
原创 set详讲(C++)
set是STL中的容器之一,不同于普通容器,它的查找速度极快,常用来存储各种经常被检索的数据,因为容器的底层是平衡二叉搜索树中的红黑树。除此之外,还可以借助其特殊的性质,解决部分难题。
2025-03-17 14:13:50
1628
原创 C++多态
本文详细介绍了多态的概念,已经构成多态的条件,并且还介绍了虚函数及其重写,还介绍了重载、重写、重定义的区别,抽象类最重要的是介绍了多态的原理是因为元素表,这里面还有2到习题
2025-03-10 13:54:09
1399
原创 C++继承
继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称为派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。例如,以下代码中Student类和Teacher类就继承了Person类。//父类public:protected:string _name = "张三";
2025-03-03 12:43:30
1554
原创 list介绍和模拟实现
本文重点介绍了list的实现过程及其概念,并且在讲解的过程中加入了非常多的图文解释,本文最精华的部分就是list迭代器的优化版本,我相信大家看了我这一篇一定会对迭代器及其类型推演有非常深刻的印象
2025-03-03 12:43:20
1681
原创 八大排序算法(C语言实现)
本文详细的介绍了常见的7大排序和一个小众的计数排序,介绍了冒泡、选择、插入、希尔、堆排、快排、归并、计数排序,里面都是用C语言编写的,图文并茂,写的非常详细,希望大家进来看完都能有所收获
2025-02-24 12:35:28
3347
2
原创 vector底层实现详讲
本文章历时3天终于写完,里面是我对vector的理解的详讲(写了2万多字,图文并茂),有扩容,插入元素,删除元素,拷贝构造中有迭代器区间初始化,有n个val初始化,有常量数组初始化,还有memcoy对扩容的影响,以及杨辉三角,非常推荐大家进来学习
2025-01-07 16:42:07
2032
原创 C/C++内存管理
本文介绍了C、C++的内存空间布局,重点说明了new和delete以及new/delete和malloc/free的区别,以及他们修饰内置类型和自定义类型的区别。解释了为什么new自定义类型会多开四字节的空间
2024-12-05 18:11:43
1428
原创 类和对象下
本文重点介绍了赋值运算符重载和日期类的实现,以及const修饰成员变了,和构造函数中的初始化列表,内置类型转换成成员变了,和static修饰成员,和有元和内部类,全网1万多字,图文并茂,欢迎的家进来学习
2024-12-02 18:24:21
2169
2
原创 预处理详解
全网最全预处理讲解,里面有超多图片进行理解,值得大家点进来看看,,比如有预定义符号和#define定义常量和#define定义宏和带有副作用的宏参数和宏替换的规则和宏函数的对比和#和##和命名约定和#undef和命令行定义和条件编译和头文件的包含和其它预处理指令
2024-05-14 19:51:04
1453
2
原创 C语言文件操作详讲
关于文件操作的全方面细致讲解,保证看一遍就会,文章里面讲解了流,文件指针,顺序读写函数:fgetc,fputc,fgets,fputs,fscanf,fprintf,fread,fwrite和额外扩展的sscanf,sprintf。随机读写中的:fseek,ftell,rewind。还讲解了文件读取结束的判定和文件缓冲区
2024-04-15 19:30:17
2160
1
原创 自定义类型:结构体
什么是结构体,结构体变量创建和初始化,结构体访问操作符,匿名结构体,结构体的自引用,结构体内存对齐,结构体的传参,修改默认对齐数,你想关于结构体的这里都有
2024-03-26 18:48:53
854
3
原创 C语言内存函数
destination:目标空间source:源头num:要拷贝的字节个数void *:返回的是目标空间的起始地址模拟实现num为20的时候,程序就会执行20次,最终src会走到arr1[4]最后一个字节,dst会走到arr2[4]最后一个字节的位置。
2024-03-10 15:29:04
858
1
原创 分支与循环
我们可以看到这里并没有打印5,是因为当i等于5时执行continue就没有执行后面的输出语句,而是执行了表达式3(i++),所以continue的作用是结束本次循环,进行下一次循环,而不终止整个循环的执行。:你输入的20首先跟0相比较,20肯定是大于0的(为真)返回1,然后1在和18相比较,18肯定是大于1的所以表达式结果为1,就执行了语句1。我们加上大括号来看。因为我们是先输出,所以i等于5的时候就执行了continue跳转到表达式判断中,这就导致了i++一直没机会执行,所以就一直输出5形成了死循环。
2023-10-25 18:25:50
228
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人