- 博客(33)
- 收藏
- 关注
原创 C++进阶——用Hash封装unordered_map和unordered_set
本篇博客我会利用上一篇博客以链地址法实现的哈希表对unordered_map和unordered_set进行封装,大家如果想了解链地址法实现哈希表可以移步我的上一篇博客~C++进阶——哈希思想及实现-优快云博客。
2025-01-06 22:20:18
686
1
原创 C++进阶——哈希思想及实现
哈希,又称散列。哈希是人名直译过来的名字,实际上散列更能概括哈希的情况。哈希/散列是一种组织数据的方式,散列听起来就有散乱排列的意思,实际上确实如此。给我们一组数据(key-value或者key都可以)和一部分空间(vector),我们直接通过某种方式对key做一定的计算得出数据的存储位置进行存储,在查找的时候利用同样的方式来计算出其位置。这样实现出来的哈希理想状态下增删查改的效率就是O(1)。本篇博客就让我们一起来探讨一下哈希的各种细节及实现吧!!
2024-12-29 17:15:17
754
4
原创 C++——stack和queue
stack和queue都可以通过复用之前实现过的容器来实现,所以内容很简单,主要了解一下容器适配器和默认的deque这个数据结构即可
2024-10-11 23:21:25
732
3
原创 C/C++——内存管理
new/delete和 malloc/free最大区别是new/delete对于自定义类型除了开空间还会调用构造函数和析构函数。new调用构造函数时,如果没有传参数,就会调用默认构造初始化,如果传了参数,就会调用需要传参的构造来初始化。class Apublic:A(int a1 = 0,int a2 = 0)// 必须要有默认构造: _a1(a1),_a2(a2)~A()private:int _a1;int _a2;int main()
2024-07-28 15:03:56
963
13
原创 C++——类和对象(下)
•之前我们实现构造函数时,初始化成员变量主要使用函数体内赋值,构造函数初始化还有一种方式,就是初始化列表,初始化列表的使用方式是以⼀个冒号开始,接着是⼀个以逗号分隔的数据成员列表,每个"成员变量"后面跟⼀个放在括号中的初始值或表达式。•每个成员变量在初始化列表中只能出现⼀次,语法理解上初始化列表可以认为是每个成员变量定义初始化的地方。
2024-07-27 18:01:25
758
16
原创 C++——类和对象(中)
我们不写,编译器默认⽣成的构造,对内置类型成员变量的初始化没有要求,也就是说是是否初始化是不确定的,看编译器。另外提一下,如果把默认构造的代码屏蔽掉,只写了一个需要传参的构造函数,编译器就不会生成默认构造函数,那么这样的写法就是有问题的,又因为编译器的默认构造不太好用,所以我们还是最好自己写出需要的默认构造和传参构造。析构函数与构造函数功能相反,析构函数不是完成对对象本身的销毁,比如局部对象是存在栈帧的,函数结束栈帧销毁,它就释放了,不需要我们管,C++规定对象在销毁时会自动调用析构函数,完成对象中。
2024-07-25 19:20:26
1236
8
原创 C++——类和对象(上)
a.class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。b.为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前面或者后面加_ 或者 m开头,注意C++中这个并不是强制的,只是⼀些惯例,具体看公司的要求。c.
2024-07-24 14:15:31
924
11
原创 C++——入门基础
C++兼容C语⾔绝⼤多数的语法,所以C语⾔实现的hello world依旧可以运⾏。当然C++有⼀套自己的输⼊输出,严格说C++版本的hello world应该是这样写的。这个现在肯定有点看不懂,看到后面会明白点。
2024-07-10 22:01:10
1503
10
原创 快速排序的两种实现方法及其递归的优化
确定一个key值,将比key大的值放到key右边,比key小的值放到key左边,key在中间,这样key的位置就已经排好了,我们就只需要将key左右两边的数组用同样的方法进行排序,到最后分割出的数组只剩一个元素时,整个数组就变得有序了。对数组的不断分裂再用相同的方法进行排序后再分裂,听起来有点递归的意思,我们这里用递归和非递归两种方式来实现快速排序。
2024-06-06 18:58:31
809
1
原创 选择排序、堆排序
选择排序是遍历一遍数组,选出最大或者最小的元素放在数组一边的方法,优化版本可以同时找到最大和最小元素,然后分别放到数组的右左两边,即使这样,效率仍然很低。
2024-06-06 11:46:11
185
3
原创 插入排序和希尔排序
插入排序的思想是将需要排序,的数组分成前后两个部分,前面有序,从一个元素开始,与后面的元素比较后插入到合适的地方。不过这种排序的时间复杂度为O(N^2),复杂度高的原因主要是数组中较大元素移到右边和较小元素移到左边都需要一位一位移动,为了解决这个弊端,就有了希尔排序。
2024-06-05 15:41:35
206
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人