- 博客(21)
- 收藏
- 关注
原创 30天速通C++(十五):map 和set
哈喽,各位小伙伴大家好!上期我们讲了位图和布隆过滤器。今天我们来讲一下map和set的使用。声明set的声明如下,T就是set底层关键字的类型仿函数set默认要求T支持小于比较,如果不支持或者想按自己的需求走可以自行实现仿函数传给第二个模版参数空间配置器set底层存储数据的内存是从空间配置器申请的,如果需要可以自己实现内存池,传给第三个参数。模版参数⼀般情况下,我们都不需要传后两个模版参数。底层结构set底层是用红黑树实现,增删查效率是 ,迭代器遍历是走的搜索树的中序,所以是有序的。
2025-06-10 00:07:09
784
原创 30天速通C++(十四):位图和布隆过滤器
有⼀些场景下面,有大量数据需要判断是否存在,而这些数据不是整形,那么位图就不能使用了,使用红黑树/哈希表等内存空间可能不够。这些场景就需要布隆过滤器来解决。布隆过滤器是由布隆(Burton Howard Bloom)在1970年提出的 ⼀种紧凑型的、比较巧妙的概率型数据结构,特点是高效地插入、和查询,可以用来告诉你 “某样东西⼀定不存在或者可能存在”,它是用多个哈希函数,将⼀个数据映射到位图结构中。此种方式不仅可以提升查询效率,也可以节省大量的内存空间。哈希映射。
2025-06-09 23:39:49
847
原创 30天速通C++(十二):多态
基于继承多态是⼀个继承关系的下的类对象,去调用同⼀函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象优惠买票。虚函数必须是基类的指针或者引用调用虚函数但是这里父子类的关系并不是那么绝对class Carpublic:public:cout << "Benz-舒适" << endl;public:cout << "BMW-操控" << endl;虚函数重写被调用的函数必须是虚函数,并且完成了虚函数重写/覆盖。
2025-06-09 21:36:47
704
原创 30天速通C++(十一):继承
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的⼿段,它允许我们在保持原有类特性的基础上进行扩展,增加方法(成员函数)和属性(成员变量),这样产⽣新的类,称派⽣类。继承呈现了⾯向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的函数层次的复用,继承是类设计层次的复用。
2025-06-05 19:28:48
851
原创 30天速通C++(十):深入剖析模版
通常情况下,使用模板可以实现一些与类型无关的代码,但对于一些特殊类型的可能会得到一些错误的结果,需要特殊处理,比如:实现了一个专门用来行小于比较的函数模板可以看到,Less绝对多数情况下都可以正常比较,但是在特殊场景下就得到错误的结果。上述示例中,p1指向的d1显然小于p2指向的d2对象,但是Less内部并没有比较p1和p2指向的对象内容,而比较的是p1和p2指针的地址,这就无法达到预期而错误。此时,就需要对模板进行特化。即:在原模板类的基础上,针对特殊类型所进行特殊化的实现方式。
2025-06-04 19:22:02
790
原创 30天速通C++(九):深入理解deque
哈喽,各位小伙伴大家好!上期我们讲了list结构剖析及其模拟实现。今天我们来讲一下dequeue和模版进阶。话不多说,我们进入正题!向大厂冲锋适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。容器适配器就像我们的电流适配器一样。容器适配器就是一种转化接口,把一种接口转化为我们需要的接口。priority_queue也是一个容器适配器.priority_queue也叫优先级队列。
2025-06-03 19:34:56
649
原创 30天速通C++(八):深入理解List
哈喽,各位小伙伴大家好!上期我们讲了vector和深浅拷贝。今天我们来讲一下list及其实现。list的底层结构是一个带哨兵位头结点的双向链表。T data;
2025-06-03 19:08:50
1025
原创 30天速通C++(七):vector
我们都知道计算机只能存储0或1。那像平时我们的文字或者英文,这些字符如何在计算机存储呢?这时有个编码表的东西就出来了。我们让一个字符和一个整形对应。也就是让字符和整形建立映射关系。这样计算机存储符号时存储对应的整形即可。所以编码本质就是——值和符号的映射编码关系。vector学习时一定要学会查看文档,vector的文档使用,vector在实际中非常的重要,在实际中我们熟悉常见的接口就可以,下面列出了哪些接口是要重点掌握的。由于前面我们已经讲过string了vector这里很多都是类似的。
2025-06-01 19:53:23
570
原创 30天速通C++(六):深入理解STL之string
哈喽,各位小伙伴大家好!上期我们讲了模版和STL的一些简单内容,今天我们就要深入学习STL,学了STL大家就会发现C++对比C的好处了!!多啰嗦几句,重点学习string之后大家会发现好多接口都是通用的,所以我们重点学习string,后面的就能融会贯通了。这里我们用一个char*指针指向字符串空间。一个size表示有效字符个数。一个capacity表示空间大小。在定义一个npos。
2025-05-31 21:03:15
1141
原创 30天速通C++(五):模版+STL简介
class 类模板名// 类内成员定义我们根据类模版格式写一个简单的类模版public:_size = 0;注意:模版不建议声明和定义分离到两个文件.h 和.cpp,会出现链接错误在 C++程序的构建过程中,源代码需要经过 预处理、编译、汇编和链接 四个主要阶段,最终生成可执行文件。
2025-05-31 00:16:12
626
原创 30天速通C++(四):内存管理
哈喽,各位小伙伴大家好!上期我们讲了类和对象的剩余部分。但是还有一个拷贝的编译器优化没讲。今天我们就来讲一下C++的内存管理。
2025-05-29 20:40:31
680
原创 30天速通C++(三):类与对象③
哈喽,各位小伙伴大家好!上期我们讲了类和对象的更深入的内容,今天就给把类和对象剩下的内容学完,因为类和对象是C++重中之重,所以我们花三天时间学明白是很有必要的。我们想让.h放函数的声明。.cpp放函数的定义。class Date//友元声明public:// Ĭinlinereturn 29;//后置//前置//后置//前置private:int _year;int _month;int _day;
2025-05-29 00:13:18
873
原创 番外:C++发展历史
C++最初由Bjarne Stroustrup于1979年在贝尔实验室开发,最初称为“C with Classes”。1983年正式更名为C++(++表示增量改进)。1985年发布的《C++ Programming Language》第一版标志着C++的正式发布。该版本支持类、派生类、函数重载等基础特性。作为C++98的修订版,主要修复了标准中的模糊之处,未引入新特性。每个版本均向后兼容,开发者可根据需求选择标准版本。
2025-05-27 22:47:43
282
原创 30天速通C++(一):类和对象①
hello,屏幕面前正在学技术的你,相信你也想快速仔细学完c++,类与对象是c++基础的基础也是重中之重,话不多说,让我们一起来看看吧!定义命名空间定义命名空间,需要使用到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。命名空间域namespace本质是定义出⼀个域,这个域跟全局域各自独立,不同的域可以定义同名变量,所以前面的rand不在冲突了。所有域C++中域有函数局部域,全局域,命名空间域,类域;
2025-05-26 22:46:15
614
原创 c语言求解青蛙跳台阶问题与汉诺塔问题
步骤:1.将 n−1个圆盘从左边柱子移动到中间柱子;2.将 1个圆盘从左边柱子直接移动到右边柱子;3.将 n−1个圆盘从中间柱子移动到右边柱子。return 0;
2024-08-31 11:27:59
338
1
原创 c语言实现二分查找与制作简易版扫雷
在一个有序的数组中,如果我们想要查找某一个数,我们很快能想到的就是遍历数组,但是很显然,遍历的效率太低了,现实生活中,就像别人考完试让你猜分数,你肯定不会猜1,2,3,4...,你会先猜一个看起来合理的数字,如果她说少了,那么你会猜更大的数字,这就是二分查找,也叫折半查找。
2024-03-25 12:46:28
909
1
原创 c语言栈的创建与销毁
在这个示例中,我们使用typedef定义了一个名为Stack的类型,包含一个数组stack和一个整数类型的指针top。createStack函数用来创建一个栈,首先使用malloc动态分配了一段内存空间来存储栈的信息,然后将栈顶指针top设为-1,表示栈为空,最后返回创建的栈。首先,你需要定义一个数组来存储栈的元素,可以设定一个固定的大小作为栈的容量。同时,你还需要定义一个指针来指向栈顶元素的位置,初始时栈顶指针可以指向-1,表示栈为空。在这个示例中,我们使用free函数来释放栈所占用的内存空间。
2024-03-14 13:08:44
833
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人