- 博客(65)
- 收藏
- 关注
原创 Linux项目自动化构建工具-make/Makefile
讲解了make、makefile的作用,PHONY的使用以及原理,make报错的修复
2024-05-25 12:30:39
938
19
原创 Linux编译器-gcc/g++使用
今天学习了gcc的预编译、编译、汇编、链接四个功能,还补充了编译器自举和静态库、动态库的概念、如何下载以及使用静态库的知识
2024-05-24 15:40:12
620
6
原创 Linux编辑器-vim使用
我们今天学习了vim的使用方法、vim的三种模式以及对应的命令,最后学习了vim环境的搭建,改造出了C++IDE
2024-05-23 21:16:11
1644
21
原创 Linux 软件包管理器 yum的下载、功能介绍及使用
我们讲解了Linux下的三种软件安装方式,Linux的生态、yum的list、intstall、remove三板斧,以及yum的概念、修改和还原
2024-05-20 20:32:27
1072
1
原创 Linux基础指令讲解(date,cal,find,grep,zip,unzip,tar,uname)
Linux基础指令讲解(date,cal,find,grep,zip,unzip,tar,uname,tab,crtl+c,ctrl+d,关机)
2024-05-18 14:54:06
943
原创 linux基础指令讲解(rmdir、rm、man、cp、mv、cat、more、less、head、tail)
linux基础指令:rmdir、rm、man、cp、mv、cat、more、less、head、tail的讲解
2024-05-16 21:42:32
1040
1
原创 linux基础指令讲解(ls、pwd、cd、touch、mkdir)
现在我们也是正式迈入linux的大门了,今天算是浅浅的学习了五个指令(ls、pwd、cd、touch、mkdir)
2024-05-15 20:43:53
778
2
原创 C++11的更新介绍(lamada、包装器)
然而,这里的函数、仿函数、lambda的返回值和参数类型相同,可以认为三者极其相似,有没有办法让函数模板把他们识别为一种类型,从而只需要实例化一份呢。此时a,b具有常性,如果要去掉他们的常性就要加上mutable,此时lambda获得ab的方式是传值,所以不会影响到父作用域的ab。请注意,这里我们所传的不是对象,而是类,但是lambda返回值本身就是对象,所以直接传lambda肯定是不可以的。该仿函数无法直接调用,如果想要调用,可借助auto将其赋值给一个变量,lambda返回的仿函数对象,
2024-04-13 11:50:27
1069
7
原创 C++11的更新介绍(新的类功能、可变参数模板)
C++11的新特性可变参数模板能够让您创建可以接受可变参数的函数模板和类模板。下面就是一个基本可变参数的函数模板// Args是一个模板参数包,args是一个函数形参参数包// 声明一个参数包Args...args,这个参数包中可以包含0到任意个模板参数。{}上面的参数args前面有省略号,所以它就是一个可变模版参数,我们把带省略号的参数称为“参数包”,它里面包含了0到N(N>=0)个模版参数。
2024-04-13 11:17:17
892
5
原创 C++11的更新介绍(初始化、声明、右值引用)
我们今天学习了初始化、声明以及右值引用三个点,大概是学完了一半,剩下的就下次再讲啦。🥰创作不易,你的支持对我最大的鼓励🥰🪐🪐。
2024-04-12 07:48:34
1132
35
原创 [C++]哈希应用之位图&布隆过滤器
我们之前学习了哈希表,哈希表通过映射关系,实现了O(1)的复杂度来查找数据,哈希在实践中是一个非常重要的思想,今天要学习的就是哈希思想的两大应用:位图与布隆过滤器。
2024-04-09 19:12:35
1140
22
原创 【C++进阶】用哈希实现unordered_set和unordered_map的模拟
之前我们学完红黑树后对他进行了改造,使之成为map和set的底层容器,今天我们则要把哈希表进行修改并以此为基础实现。
2024-04-08 21:32:30
791
8
原创 【C++进阶】哈希表(哈希函数、哈希冲突、开散列、闭散列)
首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表(又称哈希桶)中。比如中的场景,现在需要插入元素44,先通过哈希函数计算哈希地址,hashAddr为4,因此44理论上应该插在该位置,但是该位置已经放了值为4的元素,即发生哈希冲突。那如何寻找下一个空位置呢?当负载因子越大,哈希冲突的概率就越大,同时发生哈希踩踏的概率也越大,对于开放定址法,应该控制负载因子小于0.7,超过0.7则扩容。
2024-04-08 02:17:23
1118
23
原创 【C++进阶】【STL】set和map的讲解及模拟实现
1.了解了关联性容器和键值对的概念2.了解了以红黑树为基础的四大容器的作用3.重写了红黑树4.模拟了map和set,并分析了种种设置的原因赠人一赞,日行一善。
2024-04-05 15:38:22
1104
4
原创 【C++进阶】带你手撕红黑树(红与黑的爱恨厮杀)
我们可以认为事先建造好一颗纯黑节点的满二叉树,再在两个黑节点之间插入红节点,则理论最长路径就是一黑一红交替,不超过最短路径的二倍。,不得不惊叹于他那近乎绝对的平衡,然而也惋惜于插入删除效率的低下,今天要讲的红黑树则是以相对的平衡换来了插入删除效率的大幅提高,可谓是各有千秋。4. 对于每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点。5. 每个叶子结点都是黑色的(此处的叶子结点指的是空结点)3. 如果一个节点是红色的,则它的两个孩子结点是黑色的。2. 检测其是否满足红黑树的性质。
2024-04-04 13:40:47
641
4
原创 【C++进阶】AVL树(来自二叉搜索树的复仇)
假如以pParent为根的子树不平衡,即pParent的平衡因子为2或者-2,分以下情况考虑1. pParent的平衡因子为2,说明pParent的右子树高,设pParent的右子树的根为pSubR 当pSubR的平衡因子为1时,执行左单旋当pSubR的平衡因子为-1时,执行右左双旋2. pParent的平衡因子为-2,说明pParent的左子树高,设pParent的左子树的根为pSubL 当pSubL的平衡因子为-1是,执行右单旋 当pSubL的平衡因子为1时,执行左右双旋旋转完成后,
2024-04-03 18:16:15
1011
3
原创 【C++进阶】二叉搜索树(来自二叉树的复仇)
今天我们学习了二叉树里的扛把子——二叉搜索树,细致地模拟了他的接口的实现(递归与迭代),接着讲解了他的应用——K模型和KV模型,最后把KV写了一遍。
2024-04-01 16:27:54
1098
3
原创 【C++进阶】多态,带你领悟虚函数和虚函数表
通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态我们今天把多态摸了个底朝天,从概念到实现再到原理过了一遍,建议去练练题目巩固巩固多态的概念2. 多态的定义及实现3. 抽象类4. 多态的原理5. 单继承和多继承关系中的虚函数表6. 继承和多态常见的面试问题。
2024-03-30 15:00:06
904
6
原创 C++进阶,手把手带你学继承
1. 很多人说C++语法复杂,其实多继承就是一个体现。有了多继承,就存在菱形继承,有了菱形继承就有菱形虚拟继承,底层实现就很复杂。所以一般不建议设计出多继承,一定不要设计出菱形继承。否则在复杂度及性能上都有问题。2. 多继承可以认为是C++的缺陷之一,很多后来的OO语言都没有多继承,如Java。10.笔试面试题学完了继承来试试这几道面试题吧。1.什么是菱形继承?菱形继承的问题是什么?2.什么是菱形虚拟继承?如何解决数据冗余和二义性的3.继承和组合的区别?什么时候用继承?什么时候用组合。
2024-03-30 10:05:27
902
23
原创 【c++模板】泛型编程(你真的懂模版特化、分离编译和非类型参数吗)
【c++模板】泛型编程(你真的懂模版特化、分离编译和非类型参数吗)一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。1. 泛型编程2. 函数模板3. 类模板4非类型模板参数5. 类模板的特化6. 模板的分离编译
2024-03-27 20:48:48
779
6
原创 [STL]priority_queue类及反向迭代器的模拟实现
我们现在写一个可以比较两个变量大小的仿函数以及函数class Less那么问题来了,仿函数的优势是什么呢?我们知道有时候为了在函数中调用别的函数我们需要传一个叫做函数指针的东西,简单的函数还好,复杂的函数的指针是真的难看懂,于是乎,仿函数横空出世,你要用它就传个他的类就行,一下子容易多了。仿函数的用法及优势,并在priority_queue适配器中加以应用对priority_queue进行了了解和模拟,实现很久前就提到的了反向迭代器,对迭代器这个概念有了更深的了解。
2024-03-26 19:57:28
711
3
原创 【c++】【STL】stack类、queue类、deque类详解及模拟
4.1 deque的原理介绍deque(双端队列:是一种双开口的连续空间的数据结构,双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不需要搬移元素;与list比较,空间利用率比较高。这节课我们学了容器适配器vector、list类的模拟、deque的底层设计,看到了他迭代器的复杂应用。
2024-03-26 12:54:41
1004
3
原创 【STL】list类的讲解及模拟实现
学习完list类,与之前相比,最大的收获就是迭代器的设计,同时也对多参数模板有了更深一步的了解,虽然过程艰辛,但是,List,over!相信下一个难题也会被攻克😘😘😘。
2024-03-25 00:29:18
1057
8
原创 vector类详解及重要函数实现
STL容器之vector,他来了!【本节目标】1.vector的介绍及使用2.vector深度剖析及模拟实现1.vector的介绍1. vector是表示可变大小数组的序列容器。2.就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。3.本质讲,vector使用动态分配数组来存储它的元素。
2024-03-23 23:16:42
1240
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
836
5
原创 c++类和对象(下)
咱们之前也是打开了c++的大门,相信很多朋友对这门新的语言都充满了好奇,那么今天就来份硬菜满足一下各位,铛铛铛铛,c++第一座大山:类和对象,他来了!来学习类和对象的宝子们如果没看上期可以点链接看一下哦c++类和对象(上)以及c++类和对象(中)【本节目标】1.再谈构造函数2. Static成员3.友元4.内部类5.匿名对象6.拷贝对象时的一些编译器优化7.再次理解封装1.再谈构造函数1.1 初始化列表的由来。
2024-03-20 21:07:12
879
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
845
21
原创 c++类和对象(上)
咱们之前也是打开了c++的大门,相信很多朋友对这门新的语言都充满了好奇,那么今天就来份硬菜满足一下各位,铛铛铛铛,c++第一座大山:类和对象,他来了!【本节目标】1.面向过程和面向对象初步认识2.类的引入3.类的定义4.类的访问限定符及封装5.类的作用域6.类的实例化7.类的对象大小的计算8.类成员函数的this指针1.面向过程和面向对象初步认识C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是。
2024-03-18 21:39:19
1199
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
697
12
原创 c++入门你需要知道的知识点(上)
咱也是好久没有更新了,继c语言和数据结构之后,今天再开个新坑c++,学c++与C语言有个共同点,那就是要及时写博客,一方面是及时总结知识方便以后回顾复习,一方面也是检验自己当前的学习效果,欧克,那麽今天我们就要踏入c++的大门,今天先来初窥门径。1.本节要求C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。熟悉C语言对C++学习有一定的帮助,本节主要目标:1.C++是如何对C语言设计不合理的地方进行优化的,比如:作用域方面、IO。
2024-03-15 20:37:24
1078
6
原创 扫雷C语言(可展开一片空白)
1.玩家可以通过选择1进入游戏,0退出游戏。2.选错的话提醒玩家,重新选择。3.告诉玩家游戏规则1.包含需要的头文件2.包含需要的宏定义3.包含需要的函数接口恭喜你,看完了这~么长的文章,熟能生巧,看完记得练习哦,ps:本章部分图片来源《比特就业课课件》。
2024-02-02 18:48:51
938
4
原创 三子棋游戏小课堂
已经学会数组的朋友们注意啦,现在的你已经有能力写出两个小游戏了,一个是扫雷,一个是三子棋,今天咱们就来手搓三子棋代码。C语言实现随机数数组的使用1.玩家可以通过选择1进入游戏,0退出游戏。2.选错的话提醒玩家,重新选择。3.告诉玩家游戏规则。
2024-01-31 20:38:53
965
5
原创 2023年博客总结反思与未来规划
我是某个211的大一学生,当前专业是信息工程学院,是暑假最后半个月开始接触编程,之前完全没有学习过,我学编程的主要原因是自己对编程感兴趣,次要原因是专业对编程能力有一定要求。
2024-01-31 17:55:34
893
1
原创 双链表的基本知识以及增删查改的实现
之前我们对单链表进行了非常细致的剖析,现在我们所面临的则是与之相对应的双链表,我会先告诉诸位它的基本知识,再接着把它的增删查改讲一下,ok,正文开始。我们上一篇也说了。链表一共有八种,具体可以看下文。【单链表实现通讯录(增删查改) - CSDN App】http://t.csdnimg.cn/EABuy我们之前所说的单链表指的是不带头不循环单向链表,而双链表则是带头循环双向链表,只要会了这两个,那八种链表就都会了。二.为什么引入双链表?
2024-01-30 22:50:53
583
8
原创 单链表实现通讯录(增删查改)
前言之前写了很多次通讯录,一次比一次复杂,从静态到动态,再到文件操作,再到顺序表,今天要好好复习一下单链表,于是乎干脆用单链表再写一遍。首先我们之前已经用单链表写过他的增删查改了,于是乎,我们应该在此基础之上进行修改,而不是从头开始写,先把之前的增删查改拿出来。
2024-01-29 21:09:35
756
1
原创 数据结构之单链表详解
之前大摆了5天多,没怎么学编程,自昨日起,觉不可如此,痛定思痛,开始继续学习,昨天刷了20多道简单级别的力扣,今天想把链表好好巩固一下,于是乎,把单链表的增删查改搞了出来,还用单链表写了通讯录,等下写完博客在去和双链表缠斗一番,ok,王子公主请看下文。//不对劲////////!链表的结构跟⽕⻋⻋厢相似,淡季时⻋次的⻋厢会相应减少,旺季时⻋次的⻋厢会额外增加⼏节。与顺序表不同的是,链表⾥的每节"⻋厢"都是独⽴申请下来的空间,我们称之为“结点/节点”是带头双向循环链表。构的⼦结构,如哈希桶、图的邻接表等等。
2024-01-29 20:46:49
638
2
原创 数据结构之使用顺序表写出通讯录
int age;注意注意,重点来了,我们定义了一个结构体,它包含了通讯录联系人的种种信息例如姓名,性别,年龄,电话和住址,接着我们又给结构体换了个名字——SLDataType它是个英文缩写,即Sequence List Data Type,顺序表数据类型,ok回想一下上一篇文章,我们所用的顺序表数据类型是int,当时也是给他换成了这个名字,如此一来,之前我写的函数就不会因为类型改变而要再全部改一遍了。int size;}SL;
2024-01-22 22:41:37
1269
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人