进击的C++
文章平均质量分 97
系统学习C++
快乐的流畅
心之所向,素履以往,生如逆旅,一苇以航。
展开
-
【C++练级之路】【Lv.20】位图和布隆过滤器(揭开大数据背后的神秘面纱)
是由布隆(Burton Howard Bloom)在1970年提出的 一种紧凑型的、比较巧妙的。这种特性其实说两面一体的,既能带来优势(精准快速判断一定不存在),也会带来缺陷(存在会误判)。它不再是一 一映射的关系,而是将一个值映射到多个地址,从而降低了值与值之间冲突的概率。,其中运用最多的是string类。同时,面对数据量小且特殊的情况时,位图所消耗的空间可能比哈希表大。,每个位只能存储0或1,分别代表数据不存在和存在。的思想,在实际中有许多运用,之前介绍的。,将不同类型转换为整型,映射在位图上。原创 2024-04-11 06:00:00 · 2315 阅读 · 82 评论 -
【C++练级之路】【Lv.19】【STL】unordered_set类和unordered_map类的模拟实现
作为底层实现的,与之类似,unordered系列的unordered_set类和unordered_map类,都是通过。unordered_map最好用的重载运算符[ ],我们肯定也要实现,平常插入和修改使用[ ]更加方便。细节:运用两个仿函数,Hash转整型,KeyOfT获取键值。细节:插入参数类型为pair(键值对)改造后的哈希表,最重要的功能之一就是。STL库中,set类和map类都是。原创 2024-04-07 00:00:00 · 1657 阅读 · 5 评论 -
【C++练级之路】【Lv.18】哈希表(哈希映射,光速查找的魔法)
相比闭散列,开散列看似增加了存储指针的空间开销,实际上闭散列要保证大量的空闲单元以降低哈希冲突,所以开散列反而更加节省空间,其空间利用率更高!原创 2024-04-04 00:00:00 · 1157 阅读 · 41 评论 -
【C++练级之路】【Lv.17】【STL】set类和map类的模拟实现
如果变成第二个模板参数T传入const K,那么就会形成两个连续的const,这是不被允许的。尽管set和map可以各自实现一棵红黑树,但是为了提高代码的复用率,STL库中将红黑树进行了一定的改造,实现。此时,可能有人会问,那刚刚set不允许修改key,为什么不也直接用const修饰呢?map最好用的重载运算符[ ],我们肯定也要实现,平常插入和修改使用[ ]更加方便。细节:begin返回最左节点的迭代器,end返回空迭代器。改造后的红黑树,最重要的功能之一就是。,以最左结点为首,以最右结点为尾。原创 2024-03-28 06:00:00 · 1326 阅读 · 46 评论 -
【C++练级之路】【Lv.16】红黑树(冰与火的碰撞,红与黑的史诗)
它们不是实际存储数据的节点,而是树结构中的占位符,用于定义树的边界。之前学习的AVL树,是一种平衡二叉搜索树,它追求绝对平衡,从而导致插入和删除性能较差。而今天学习的红黑树,是另一种平衡二叉搜索树,它追求相对平衡,使得增删查改的性能都极佳,时间复杂度皆为O(log。因为插入新节点时(不为根部),如果插入黑色,就会直接破坏性质5,导致每条路径黑结点数目不同;因为红黑树也是二叉搜索树,所以默认成员函数和遍历与之前写的没什么不同,这里重点讲解红黑树的插入。红黑树,顾名思义,其节点有红和黑两种颜色。原创 2024-03-26 06:00:00 · 1682 阅读 · 84 评论 -
【C++练级之路】【Lv.15】AVL树(双子旋转,领略绝对平衡之美)
之前讲解了二叉搜索树,最优情况下它具有非常好的搜索性能,但是在极端场景下,它可能退化为单支树,可以形象地称为歪脖子树~这样通过控制子树高度差,让AVL树几乎完美接近于平衡,便不会出现单支树的情况,保证了优良的搜索性能,因此AVL树又称为。,比如:插入时要维护其绝对平衡,旋转的次数比较多,更差的是在删除时,有可能一直要让旋转持续到根的位置。因为AVL树也是二叉搜索树,所以默认成员函数和遍历与之前写的没什么不同,这里重点讲解AVL树的插入。(即不会改变),可以考虑AVL树,但一个结构经常修改,就不太适合。原创 2024-03-23 06:00:00 · 1550 阅读 · 95 评论 -
【C++练级之路】【Lv.14】二叉搜索树(进化的二叉树——BST)
二叉搜索树(BST,Binary Search Tree),又称为二叉排序树。非空左子树的所有键值小于其根结点的键值非空右子树的所有键值大于其根结点的键值左右子树均为二叉搜索树。原创 2024-03-19 09:37:02 · 1675 阅读 · 60 评论 -
【C++练级之路】【Lv.13】多态(你真的了解虚函数和虚函数表吗?)
多态,顾名思义,即多种形态。具体来说,就是不同对象执行同一行为而产生不同的结果。比如买票这个行为,当普通人买票时,是全价买票;学生买票时,是半价买票;军人买票时是优先买票。多态,是在不同继承关系的类对象,去调用同一函数,产生不同的行为。比如:Student继承了Person。Person对象买票全价,Student对象买票半价。通过父类的指针或引用调用被调用的必须是虚函数,并且虚函数必须重写。原创 2024-03-14 15:14:52 · 1271 阅读 · 51 评论 -
【C++练级之路】【Lv.12】继承(你真的了解菱形虚拟继承吗?)
继承(inheritance),是面向对象的三大特性之一。它是面向对象编程中,使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类。之前我们接触的复用,都是函数设计层面的复用,而继承则是类设计层面的复用,体现了由简单到复杂的认知过程。此时,Person类称为基类(父类),Student类称为派生类(子类)继承方式为public(公有)继承。原创 2024-03-10 23:07:58 · 1220 阅读 · 39 评论 -
【C++练级之路】【Lv.11】模板(你真的了解模板特化和分离编译吗?)
返回值类型 函数名(参数列表){}注意typename是用来定义模板参数关键字,也可以使用class切记:不能使用struct代替classclass 类模板名 {};T* _finish;模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生,同时还增强了代码的灵活性。原创 2024-03-06 06:00:00 · 1059 阅读 · 46 评论 -
【C++练级之路】【Lv.10】【STL】priority_queue类和反向迭代器的模拟实现
仿函数,是一种特殊类型的类,它重载了()运算符,使得这个类的使用看起来像一个函数,因此它又称为函数对象。具体来说,仿函数就是将函数的特性赋予到类上,使得这个类有了类似函数的行为。这次学习了仿函数的概念和基本用法,对于升降序、大小堆等转换具有极大便利。同时实现了新的容器适配器——priority_queue(优先级队列),实际上就是堆。并且也完美实现了同为适配器的反向迭代器,至此,对于适配器有了更深一步的了解和运用。原创 2024-03-04 12:32:35 · 1229 阅读 · 41 评论 -
【C++练级之路】【Lv.9】【STL】stack类和queue类的模拟实现
这次学习了容器适配器——stack和queue,了解到用容器作为模板的美妙与神奇,极大简化构建容器的代码量。原创 2024-02-28 07:00:00 · 1297 阅读 · 32 评论 -
【C++练级之路】【Lv.8】【STL】list类的模拟实现
学习完list类,对于STL中的精华——迭代器设计,有了更深一步的了解。同时,了解多参数模板的用途和方法,极大提高代码复用程度。原创 2024-02-22 12:35:54 · 1967 阅读 · 64 评论 -
【C++练级之路】【Lv.7】【STL】vector类的模拟实现
关于STL容器的学习,我们来到了运用最广泛、最常见的vector。有了之前关于string的学习,我们对容器设计有了一个大概的了解,而今天在熟悉的基础上去探求vector相比于string有哪些异同,同时迎来更多的新挑战……原创 2024-01-24 17:45:35 · 1566 阅读 · 119 评论 -
【C++练级之路】【Lv.6】【STL】string类的模拟实现
我们来模拟实现string类,不是为了造一个更好的轮子,而是熟练掌握重点函数的功能与应用,顺便巩固之前学习的C++语法。常言道,没学过STL,那你根本没学过C++!C++的梦幻之旅,才刚刚开始……拜托拜托这个真的很重要!有问题可以评论或者私信呢秒回哦。原创 2024-01-16 09:17:03 · 1805 阅读 · 66 评论 -
2023,我与C/C++相遇的奇迹之年
记录一下我踏入计算机世界的起始年,分享一路上的感悟与酸甜苦辣,这一路有志同道合的伙伴同行,留下了太多的美好,我很珍惜。2023,我与C/C++相遇的奇迹之年就此落下帷幕,而希望,仍在远方眺望。最后,提前祝福大家新年快乐啦,新的一年写代码没有bug,写题目秒出思路哦!原创 2023-12-29 06:00:00 · 3926 阅读 · 116 评论 -
【C++练级之路】【Lv.5】动态内存管理(都2023年了,不会有人还不知道new吧?)
new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数。原创 2023-12-25 06:45:00 · 2435 阅读 · 59 评论 -
【C++练级之路】【Lv.4】类和对象(下)(初始化列表,友元,static成员,编译器的优化)
尽量使用const &传参至此,类和对象章节结束。而从此刻开始,才算是真正进入C++的大门!之所以有人说C++难学,大概就是前期门槛较高,语法繁杂。但是,此刻迈过这道坎,便是轻舟已过万重山。原创 2023-12-15 06:00:00 · 1966 阅读 · 77 评论 -
【C++练级之路】【Lv.3】类和对象(中)(没掌握类的6个默认成员函数,那你根本就没学过C++!)
其中构造函数,析构函数,拷贝构造函数和赋值运算符重载,才是我们需要重点掌握并且经常要显式定义的。原创 2023-12-12 07:00:00 · 1699 阅读 · 76 评论 -
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。原创 2023-12-04 06:45:00 · 2135 阅读 · 37 评论 -
【C++练级之路】【Lv.1】C++,启动!(命名空间,缺省参数,函数重载,引用,内联函数,auto,范围for,nullptr)
总之,这是一个光明的起点,美妙的开始,程序员通向大厂的必经之路。我将怀着饱满的热情,去攀登C++的珠穆朗玛峰,C++,启动!原创 2023-12-03 11:54:26 · 1272 阅读 · 25 评论