c++大冒险
文章平均质量分 97
朋友,你或许没接触过编程,或许是刚搞完C语言,都可以的,这些文章都会给你加上各种buff的
一颗青果
向更好的编程技能前进!
展开
-
C++11的更新介绍(lamada、包装器)
然而,这里的函数、仿函数、lambda的返回值和参数类型相同,可以认为三者极其相似,有没有办法让函数模板把他们识别为一种类型,从而只需要实例化一份呢。此时a,b具有常性,如果要去掉他们的常性就要加上mutable,此时lambda获得ab的方式是传值,所以不会影响到父作用域的ab。请注意,这里我们所传的不是对象,而是类,但是lambda返回值本身就是对象,所以直接传lambda肯定是不可以的。该仿函数无法直接调用,如果想要调用,可借助auto将其赋值给一个变量,lambda返回的仿函数对象,原创 2024-04-13 11:50:27 · 1087 阅读 · 7 评论 -
C++11的更新介绍(新的类功能、可变参数模板)
C++11的新特性可变参数模板能够让您创建可以接受可变参数的函数模板和类模板。下面就是一个基本可变参数的函数模板// Args是一个模板参数包,args是一个函数形参参数包// 声明一个参数包Args...args,这个参数包中可以包含0到任意个模板参数。{}上面的参数args前面有省略号,所以它就是一个可变模版参数,我们把带省略号的参数称为“参数包”,它里面包含了0到N(N>=0)个模版参数。原创 2024-04-13 11:17:17 · 908 阅读 · 5 评论 -
C++11的更新介绍(初始化、声明、右值引用)
我们今天学习了初始化、声明以及右值引用三个点,大概是学完了一半,剩下的就下次再讲啦。🥰创作不易,你的支持对我最大的鼓励🥰🪐🪐。原创 2024-04-12 07:48:34 · 1168 阅读 · 35 评论 -
[C++]哈希应用之位图&布隆过滤器
我们之前学习了哈希表,哈希表通过映射关系,实现了O(1)的复杂度来查找数据,哈希在实践中是一个非常重要的思想,今天要学习的就是哈希思想的两大应用:位图与布隆过滤器。原创 2024-04-09 19:12:35 · 1185 阅读 · 22 评论 -
【C++进阶】用哈希实现unordered_set和unordered_map的模拟
之前我们学完红黑树后对他进行了改造,使之成为map和set的底层容器,今天我们则要把哈希表进行修改并以此为基础实现。原创 2024-04-08 21:32:30 · 821 阅读 · 8 评论 -
【C++进阶】哈希表(哈希函数、哈希冲突、开散列、闭散列)
首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表(又称哈希桶)中。比如中的场景,现在需要插入元素44,先通过哈希函数计算哈希地址,hashAddr为4,因此44理论上应该插在该位置,但是该位置已经放了值为4的元素,即发生哈希冲突。那如何寻找下一个空位置呢?当负载因子越大,哈希冲突的概率就越大,同时发生哈希踩踏的概率也越大,对于开放定址法,应该控制负载因子小于0.7,超过0.7则扩容。原创 2024-04-08 02:17:23 · 1176 阅读 · 23 评论 -
【C++进阶】【STL】set和map的讲解及模拟实现
1.了解了关联性容器和键值对的概念2.了解了以红黑树为基础的四大容器的作用3.重写了红黑树4.模拟了map和set,并分析了种种设置的原因赠人一赞,日行一善。原创 2024-04-05 15:38:22 · 1196 阅读 · 4 评论 -
【C++进阶】带你手撕红黑树(红与黑的爱恨厮杀)
我们可以认为事先建造好一颗纯黑节点的满二叉树,再在两个黑节点之间插入红节点,则理论最长路径就是一黑一红交替,不超过最短路径的二倍。,不得不惊叹于他那近乎绝对的平衡,然而也惋惜于插入删除效率的低下,今天要讲的红黑树则是以相对的平衡换来了插入删除效率的大幅提高,可谓是各有千秋。4. 对于每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点。5. 每个叶子结点都是黑色的(此处的叶子结点指的是空结点)3. 如果一个节点是红色的,则它的两个孩子结点是黑色的。2. 检测其是否满足红黑树的性质。原创 2024-04-04 13:40:47 · 663 阅读 · 4 评论 -
【C++进阶】二叉搜索树(来自二叉树的复仇)
今天我们学习了二叉树里的扛把子——二叉搜索树,细致地模拟了他的接口的实现(递归与迭代),接着讲解了他的应用——K模型和KV模型,最后把KV写了一遍。原创 2024-04-01 16:27:54 · 1111 阅读 · 3 评论 -
【C++进阶】多态,带你领悟虚函数和虚函数表
通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态我们今天把多态摸了个底朝天,从概念到实现再到原理过了一遍,建议去练练题目巩固巩固多态的概念2. 多态的定义及实现3. 抽象类4. 多态的原理5. 单继承和多继承关系中的虚函数表6. 继承和多态常见的面试问题。原创 2024-03-30 15:00:06 · 915 阅读 · 6 评论 -
【c++模板】泛型编程(你真的懂模版特化、分离编译和非类型参数吗)
【c++模板】泛型编程(你真的懂模版特化、分离编译和非类型参数吗)一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。1. 泛型编程2. 函数模板3. 类模板4非类型模板参数5. 类模板的特化6. 模板的分离编译原创 2024-03-27 20:48:48 · 806 阅读 · 6 评论 -
[STL]priority_queue类及反向迭代器的模拟实现
我们现在写一个可以比较两个变量大小的仿函数以及函数class Less那么问题来了,仿函数的优势是什么呢?我们知道有时候为了在函数中调用别的函数我们需要传一个叫做函数指针的东西,简单的函数还好,复杂的函数的指针是真的难看懂,于是乎,仿函数横空出世,你要用它就传个他的类就行,一下子容易多了。仿函数的用法及优势,并在priority_queue适配器中加以应用对priority_queue进行了了解和模拟,实现很久前就提到的了反向迭代器,对迭代器这个概念有了更深的了解。原创 2024-03-26 19:57:28 · 720 阅读 · 3 评论 -
【c++】【STL】stack类、queue类、deque类详解及模拟
4.1 deque的原理介绍deque(双端队列:是一种双开口的连续空间的数据结构,双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不需要搬移元素;与list比较,空间利用率比较高。这节课我们学了容器适配器vector、list类的模拟、deque的底层设计,看到了他迭代器的复杂应用。原创 2024-03-26 12:54:41 · 1024 阅读 · 3 评论 -
【STL】list类的讲解及模拟实现
学习完list类,与之前相比,最大的收获就是迭代器的设计,同时也对多参数模板有了更深一步的了解,虽然过程艰辛,但是,List,over!相信下一个难题也会被攻克😘😘😘。原创 2024-03-25 00:29:18 · 1071 阅读 · 8 评论 -
vector类详解及重要函数实现
STL容器之vector,他来了!【本节目标】1.vector的介绍及使用2.vector深度剖析及模拟实现1.vector的介绍1. vector是表示可变大小数组的序列容器。2.就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。3.本质讲,vector使用动态分配数组来存储它的元素。原创 2024-03-23 23:16:42 · 1288 阅读 · 6 评论 -
string类详解及重要函数实现
咱们之前也是打开了c++的大门,相信很多朋友对这门新的语言都充满了好奇,那么今天就来份硬菜满足一下各位,铛铛铛铛,c++第二座大山:STL之string,他来了!【本节目标】1.为什么要学习string类2.标准库中的string类3. string类的模拟实现1.为什么学习string类?1.1 C语言中的字符串C语言中,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合。原创 2024-03-23 00:50:35 · 867 阅读 · 5 评论 -
c++类和对象(下)
咱们之前也是打开了c++的大门,相信很多朋友对这门新的语言都充满了好奇,那么今天就来份硬菜满足一下各位,铛铛铛铛,c++第一座大山:类和对象,他来了!来学习类和对象的宝子们如果没看上期可以点链接看一下哦c++类和对象(上)以及c++类和对象(中)【本节目标】1.再谈构造函数2. Static成员3.友元4.内部类5.匿名对象6.拷贝对象时的一些编译器优化7.再次理解封装1.再谈构造函数1.1 初始化列表的由来。原创 2024-03-20 21:07:12 · 889 阅读 · 1 评论 -
c++类和对象(中)类的6个默认成员函数及const成员函数
咱们之前也是打开了c++的大门,相信很多朋友对这门新的语言都充满了好奇,那么今天就来份硬菜满足一下各位,铛铛铛铛,c++第一座大山:类和对象,他来了!来学习类和对象的宝子们如果没看上期可以点链接看一下哦c++类和对象(上)【本节目标】1.类的6个默认成员函数2.构造函数3.析构函数4.拷贝构造函数5.赋值运算符重载6. const成员函数7.取地址及const取地址操作符重载1.类的6个默认成员函数如果一个类中什么成员都没有,简称为空类。原创 2024-03-19 22:47:11 · 858 阅读 · 21 评论 -
c++类和对象(上)
咱们之前也是打开了c++的大门,相信很多朋友对这门新的语言都充满了好奇,那么今天就来份硬菜满足一下各位,铛铛铛铛,c++第一座大山:类和对象,他来了!【本节目标】1.面向过程和面向对象初步认识2.类的引入3.类的定义4.类的访问限定符及封装5.类的作用域6.类的实例化7.类的对象大小的计算8.类成员函数的this指针1.面向过程和面向对象初步认识C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是。原创 2024-03-18 21:39:19 · 1211 阅读 · 11 评论 -
c++入门你需要知道的知识点(下)
上次我们通过c++入门知识(上)对c++有了一小点点的了解,今天便是让你彻底打开c++大门,进入大殿,欧克,正片开始。1. C++关键字2.命名空间3. C++输入输出4.缺省参数5.函数重载6.引用7.内联函数8. auto关键字(C++11)9.基于范围的for循环(C++11)10.指针空值现在我们算是把c++的大门给推开了,ok,向着c++,我们类和对象再见啦!原创 2024-03-16 16:08:29 · 713 阅读 · 12 评论 -
c++入门你需要知道的知识点(上)
咱也是好久没有更新了,继c语言和数据结构之后,今天再开个新坑c++,学c++与C语言有个共同点,那就是要及时写博客,一方面是及时总结知识方便以后回顾复习,一方面也是检验自己当前的学习效果,欧克,那麽今天我们就要踏入c++的大门,今天先来初窥门径。1.本节要求C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。熟悉C语言对C++学习有一定的帮助,本节主要目标:1.C++是如何对C语言设计不合理的地方进行优化的,比如:作用域方面、IO。原创 2024-03-15 20:37:24 · 1086 阅读 · 6 评论