自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(110)
  • 收藏
  • 关注

原创 刷题训练之二分查找

最早博主续写了牛客网130道题,这块的刷题是让同学们快速进入C语言,而我们学习c++已经有一段时间了,知识储备已经足够了但缺少了实战,面对这块短板博主续写刷题训练,针对性学习,把相似的题目归类,系统的刷题,而我们刷题的官网可以参考:​​​​​​力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台而今天我们的板块是二分查找。⭐知识讲解二分查找的时间复杂度:log(N)二分查找的范围:有序的数组或者无序⭐经典题型。

2024-04-23 12:55:53 801 18

原创 【C++11】类型转换

在C语言中我们学习了类型转换,如 int 遇到 double 类型时 int 类型就会类型转换成 double,这些都是比较简单的类型转换,但是到 C++ 时,日期类需要转换成其它类型那该如何?面对这个问题,在C++11中完成这个补丁,使其C++在相关类也可以类型转换,那C++中如何实现类型转换呢?

2024-04-23 12:54:49 991 23

原创 【Linux】静态库和动态库

库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。静态库(.a、.lib)动态库(.so、.dll)今天我们来谈谈 Linux 下静态库和动态库。⭐主体如果不想给对方我们的源代码,我们可以选择给用户提供我们的.o可重定位目标二进制文件(gcc -c 文件)与.h头文件。让用户用我们提供的.o文件进行链接即可。

2024-04-20 10:15:42 1089 16

原创 【C++11】特殊类设计

在C++的学习的过程中,我们已经知道如何创建一个类,之后我们学习了类的三大特性封装,继承,多态,在C++11中我们有一些特殊的类,我们称这些类为--->特殊类,那特殊类真的有那么特殊么???⭐主体学习【C++11】特殊类设计咱们按照下面的图解:​。

2024-04-20 10:13:56 946 32

原创 【C++11】智能指针

早期在C语言中我们学习了指针,这个指针学起来真是一个头两个大,当然学习到了这里想必大家对指针就不在害怕了,为了填上C++的不足在C++11中就扩展了智能指针,难道智能指针就真的那么智能吗?⭐主体。

2024-04-16 22:38:41 929 38

原创 【Linux】文件系统软硬链接的那些事儿

我们已经知道了简单的文件知识,文件的读写呀,管理文件呀等等等,那我们来想我们学习的文件都时独立,两个文件不能相互沟通,就好像需要过一条河,需要一座桥,使两岸可以来往,那文件的来往那又该如何呢?这里不得不提出软硬链接了。⭐主体我们大致了解磁盘的物理结构、存储结构、逻辑结构;然后就是文件系统与inode的认识。最后是软硬链接,软硬链接本质区别就是有无独立的inode。

2024-04-16 22:38:15 2117 28

原创 【C++11】异常知多少

想必我们写代码写过bug把,有句话说的好,一天写代码,三天改bug。有些浅层的代码bug在C++11已经给出,我们称这个叫异常,举个简单的栗子,我们 0 是不可以做被除数的,这里我们用 C++11 的异常就可以防止代码崩溃,让我们调试时也更加舒服,所以学习C++11的异常是必须的。⭐主体公司项目一般会进行模块划分,让不同的小组完成不同的模块;所以需要对抛出异常这件事进行规范,如果没有规范,负责最外层捕获异常的人就麻烦了,需要捕获大家抛出的各种类型的异常。

2024-04-13 14:09:55 598 15

原创 【Linux】基础IO----理解缓冲区

缓冲区大家其实不陌生,像我们使用的 VS2019 编译器这里就有缓冲区,那它到底在哪呢,比如我们打印时的窗口需要我们输入,这里就有缓冲区。其实在输入我们也好奇为什么编译器会等待我们输入,这里就不得不谈我们缓冲区的相关知识,那具体是什么呢?今天我们来解开这层面纱。⭐主体。

2024-04-13 14:09:37 944 21

原创 【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向

最早我们在C语言中学习关于如何用代码来管理文件,比如文件的输入和文件的输出,一些文件的接口,掌握上述的知识只能说是对文件入门而已,在Linux中我们是一切接文件的,如何深入学习文件的知识这是一个难题,今天我们所探讨就是Linux的基础I/O。⭐主体。

2024-04-08 21:27:39 1174 31

原创 【C++11】C++11深度解剖

学习了C++98,必然是需要学习C++新的语法,咱们今天就开始学习C++11.⭐主体相比C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。相比较而言,C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率。

2024-04-08 21:27:10 1095 29

原创 【C++】位图

前面我们已经学习了开散列实现unordered_map与unordered_set的封装,在这个封装当中能拓展出一个知识点--->位图,位图其实是开散列实现unordered_map与unordered_set的封装的一个应用场景,那它这个实际应用到底是个啥呢?今天我们就来看看⭐主体💫 位图的。

2024-03-31 13:37:48 1127 10

原创 【C++】开散列实现unordered_map与unordered_set的封装

我们已经模拟实现了哈希表,当然需要用哈希表来封装相关容器,最初的map和set封装是用红黑树,所以我们就不再封装了map和set,来封装它们的同胞兄弟unordered_map与unordered_set。对比前面map和set的封装还是比较简单的,咱们走起吧!!!⭐主体。

2024-03-31 13:37:43 940 22

原创 【C++】手撕哈希表的闭散列和开散列

谈到哈希表,大家都做过这样的题目,统计字符串的字母个数,像这样的题目可以创建一个数组,每个字母采用 a['ch']++ 计入数组中,这样的数组我们称之为哈希表,这种哈希表也是最简单的,如果说为了方便直接调用哈希表,那这个哈希表该如何模拟呢?这个问题也是今天我们所探讨的,手撕哈希表。⭐主体。

2024-03-24 20:26:42 1313 31

原创 【C++】map和set封装

map和set的知识我们学习了,模拟实现我们已经实现了AVL树和红黑树。熟练知识点为map和set的使用提供了前提,手撕AVL树和红黑树让我了解到map和set的底层如何实现,有了知识点和两树的模拟铺垫,那我们该如何封装map和set呢?⭐主体​class setprivate:class mapprivate:{}//普通迭代器的时候,它是拷贝构造//const迭代器的时候,它是构造,支持用普通迭代器构造const迭代器{}💫解引用操作作用:返回对应结点数据的引用。

2024-03-24 20:26:38 898 27

原创 刷题训练之滑动窗口

最早博主续写了牛客网130道题,这块的刷题是让同学们快速进入C语言,而我们学习c++已经有一段时间了,知识储备已经足够了但缺少了实战,面对这块短板博主续写刷题训练,针对性学习,把相似的题目归类,系统的刷题,而我们刷题的官网可以参考:​​​​​​力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台而今天我们的板块是双指针问题。⭐知识讲解⭐经典题型。

2024-03-17 22:08:01 824 31

原创 【C++】手撕红黑树

相信大家肯定听过在C++大名鼎鼎的两颗树,这两颗树分别是AVL树和红黑树,学过的小伙伴听到都是瑟瑟发抖,像一些大厂中可能会考手撕AVL树或红黑树。学习这两棵树确实难度很大,正所谓难度越大动力就越大,那本篇我们学习这两棵树的一颗树--红黑树。⭐主体。

2024-03-17 22:06:03 2424 31

原创 【C++】手撕AVL树

相信大家肯定听过在C++大名鼎鼎的两颗树,这两颗树分别是AVL树和红黑树,学过的小伙伴听到都是瑟瑟发抖,像一些大厂中可能会考手撕AVL树或红黑树。学习这两棵树确实难度很大,正所谓难度越大动力就越大,那本篇我们学习这两棵树的一颗树--AVL树。⭐主体。

2024-03-15 21:13:00 1624 18

原创 【C++】map和set深度讲解

早期我们学习了顺序容器(vector,list...),像这块容器中的元素都是按照顺序存储的,学习起来相对来说比较轻松,这个轻松是相对的,在C++STL中我们还有一种容器为关联式容器,这种容器在底层的实现及其复杂,但是使用起来相对容易,也是苦了我们编译器。关联式容器比较有代表性的就是map和set,那它们又是使用呢,又有什么优点呢?带上这些问题进入今天的学习。⭐主体set是按照一定次序存储元素的容器。在set中,元素的value必须是唯一的。

2024-03-15 21:12:56 1012 17

原创 【C++】深度解剖多态

前面我们学习了继承,在c++的面向对象中是重要的部分,而c++另一个重要的部分就是多态,这个板块很实用,在java中使用起来尤其频繁,Java这个语言也是借鉴了c++使用起来比较轻松,学习c++的多态也是必不可少的。⭐主体💫在虚函数的后面写上 =0 ,则这个函数为纯虚函数。包含纯虚函数的类叫做抽象类(也叫接口类),抽象类不能实例化出对象,但可以new别的对象来定义指针,例如Car* pBMW = new BMW;子类继承后也不能实例化出对象,只有重写纯虚函数,子类才能实例化出对象。

2024-03-10 14:13:21 858 17

原创 【C++】二叉树进阶之二叉搜索树

前期呢我们学习了简单二叉树,这个简单真的是一点都不简单呀,如果大家对二叉树的知识点忘记的小伙伴们可以看看这篇博客二叉树的实现-CSDN博客,这篇博客不单单是二叉树的进阶,这次的知识是为了后面的map和set以及红黑树...打下基础,c++的学习也是上了一个层次,进入今天的主题----二叉树进阶之二叉搜索树。⭐主体。

2024-03-10 14:13:18 1255 22

原创 【c++】继承深度解剖

你肯定听过某男子继承百亿家产吧,继承的东西就等于自己的,在c++中也继承,所继承的儿子,都有父类的属性,这个属性可能是父类的成员函数,成员变量...。我们直接再创建一个类就可以了定义属性,那我们为什么需要继承类的属性呢?今天由问题的引出,我们来探讨c++继承的方便。⭐主体💫很多人说C++语法复杂,其实多继承就是一个体现。有了多继承,就存在菱形继承,有了菱形继承就有菱形虚拟继承,底层实现就很复杂。所以一般不建议设计出多继承,一定不要设计出菱形继承。否则在复杂度及性能上都有问题。

2024-03-03 21:03:59 1350 27

原创 【c++】模板进阶

早期我们学习了模板,只能说浅学,很多重要的知识点都没有讲解,今天我们来深度讲解模板。⭐主体优点模板复用了代码,节省资源,可以更快的迭代开发,C++的标准模板库(STL)因此而产生。增强了代码的灵活性。缺陷模板会导致代码膨胀问题,也会导致编译时间变长。出现模板编译错误时,错误信息非常凌乱,不易定位错误。模板这个语法整体而言肯定是优点远大于缺点。

2024-03-03 21:03:55 1128 22

原创 【C++】优先级队列priority_queue模拟实现&&仿函数

我们在vector讲解中已经了解到了priority_queue,只能说是浅谈,priority_queue底层到底是个啥勒?今天带大家揭晓它的面纱。⭐主体这里就创建两个文件priority_queue.h(头文件),test.cpp(测试代码文件)优先级队列priority_queue,即数据结构中的堆,堆是一种通过使用数组来模拟实现特定结构二叉树的二叉树的数据结构,根据父亲节点与孩子节点的大小关系,可以将堆分为大堆和小堆:大堆:所有父亲节点的值都大于或等于它的孩子节点的值。

2024-02-29 13:21:21 1012 30

原创 【c++】stack和queue模拟实现

手撕stack和queue对比在数据结构中的模拟要比较简单,为什么呢?⭐主体这里我们创建三个文件:stack.h,queue.h,test.cpp。第一个:迭代器模式。

2024-02-29 13:21:13 1388 18

原创 【c++】STL之stack和queue详解

⭐主体在数据结构初阶中,我们模拟实现了stack和queue,只能说我们知道栈和队列,但是栈和队列的底层是如何实现的我们就不得而知了,面对这个现象我们从新学习栈和队列,深度解剖。stack是一种容器适配器,其本质是数据结构中的栈。它是一种只能在一端进行插入和删除操作的线性表。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。

2024-02-18 16:54:04 1071 25

原创 【c++】list 模拟

前面我们已经学习了list的相关知识点,必然我们要简单的模拟一下,模拟list类比较复杂,里面掺杂了我们学习双链表的知识点,对模板的使用更加复杂,还有对c++类和对象的知识点使用起来更杂。对上面知识点忘了的小伙伴们大家先去巩固巩固,学习list那就更加轻松,那咱们走起。⭐主体这里我们就不分解成三文件啦,这里就创建两个文件List.h(头文件),Test.c(测试代码文件)

2024-02-16 23:58:41 1181 15

原创 【c++】list详细讲解

⭐主体list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似:主要不同在于forward_list是单链表,只能单方向迭代。与其他的序列式容器相比(array,vector,deque),list在任意位置进行插入、移除元素的执行效率更好。

2024-02-16 23:58:38 1695 9

原创 刷题训练之双指针问题

最早博主续写了牛客网130道题,这块的刷题是让同学们快速进入C语言,而我们学习c++已经有一段时间了,知识储备已经足够了但缺少了实战,面对这块短板博主续写刷题训练,针对性学习,把相似的题目归类,系统的刷题,而我们刷题的官网可以参考:​​​​​​力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台而今天我们的板块是双指针问题。⭐知识讲解双指针有两种形式,一种是对撞指针,另一种是左右指针(快慢指针)。对撞指针:对撞指针从两端向中间移动。⼀个指针从最左端开始,另⼀个从最右端开始,然后逐渐往中间逼近。

2024-01-06 15:45:00 1735 16

原创 【c++】vector模拟

我们已经了解了vector的知识点,学完知识点必然需要来手搓一个vector,这样对知识点掌握更加熟练,如果大家写过string模拟的话,手撕vector就更加容易些😚😚。那咱们话不多说进入今天的主题---->【c++】vector模拟。⭐主体这里我们就不分解成三文件啦,这里就创建两个文件vector.h(头文件),test.c(测试代码文件)而我们今天就不像string模拟一样啦,咱们按照下面的方式来模拟vector。

2024-01-06 15:44:56 1106 24

原创 【Linux】进程控制深度了解

最早的时候我们学习了进程的状态,进程优先级和进程切换,当时不把进程控制加在里面,这里我们单独把它拉出来讲解,学习完本章对进程的板块算是熟练掌握了,咱们话不多说,直接进入今天的主题:【Linux】进程控制深度了解。⭐主体我们从以下学习【Linux】进程控制深度了解🥰🥰。

2024-01-02 19:25:55 2114 28

原创 【Linux】手把手教你做一个简易shell(命令行解释器)

作者简介:დ旧言~,目前大二,现在学习Java,c,c++,Python等> 座右铭:松树千年终是朽,槿花一日自为荣。> 目标:自己能写出一个简易shell(命令行解释器)> 毒鸡汤:要让人觉得毫不费力,只能背后极其努力。原理:shell是命令行解释器,当有命令需要执行时,shell创建子进程,让子进程执行命令,而shell只需等待子进程退出即可。

2024-01-02 19:25:52 409 7

原创 【Linux】深挖进程地址空间

学习每一个语言都跟地址扯不开关系,这也是学习每一种语言的必修课,学习好地址空间对语言的掌握熟练度就是质的飞越,我们学习代码知识只是语言的表面,像地址空间就比较深层,有点抽象,不好理解,基于这种情况博主给大家带来【Linux】深挖进程地址空间。⭐主体我们从以下学习【Linux】深挖进程地址空间😋😋。简单来讲就是是什么,为什么,怎么做😜😜。再次回顾 C/C++ 学习地址空间时候:地址空间是什么?是内存么?我们举个栗子:int main()while (1)

2023-12-29 21:27:13 2755 36

原创 【Linux】深度解剖环境变量

咱们先抛出问题,不知道大家还记得我们使用java时需要安装环境变量,这里的环境变量就是我们今天所谈的环境变量,其实我们使用APP都需要配置环境变量,有些是不需要配置的,因为这些软件自己会配置环境变量,像我们使用的java编辑器就需要配置环境变量。基于这些情况我们来谈谈Linux下的环境变量。⭐主体我们从以下学习【Linux】深度解剖环境变量🥰🥰。

2023-12-29 21:27:09 1149 8

原创 【Linux】进程状态、进程优先级和进程切换

本篇博客基于学习完冯诺依曼体系结构与操作系统及其进程,进一步深度理解进程,学习完本篇对进程的理解会更上一层楼,想必大家已经按耐不住接收新的知识,那咱们话不多说进入今天的主题--->【Linux】进程状态、进程优先级和进程切换😳😳。⭐主体我们从以下学习【Linux】进程状态、进程优先级和进程切换🤗🤗。

2023-12-19 11:16:23 3480 36

原创 【Linux】冯诺依曼体系结构与操作系统及其进程

我们最初学习Linux指令已经可以用户与操作系统交互了,往后面我们用Xshell可以编写一些简单的代码,这些只能算是入门,咱们学习Linux可不是这些,如果只学习这些的话,那在C语言中这些我们已经掌握的比较熟练了😏😏。学习Linux掌握的是各种代码底层是如何运行和使用的。⭐主体我们从以下学习冯诺依曼体系结构与操作系统及其进程🤗🤗。

2023-12-19 11:16:19 2061 22

原创 【Linux】Make和Makefile快速入门

不知道大家还记得我们写的进度条,里面就有们的makefile,在哪里面我们没有讲解,拿到这里我们深度解剖,也可以再次回顾我们的进度条,那我们话不多说,进入我们今天的主题----【Linux】Make和Makefile快速入门🤗🤗。⭐浅谈Make和Makefile什么是makelinux中make是一个构建工具,用于自动化编译和构建软件项目。它的作用是允许开发人员管理和维护复杂的软件项目,自动化编译过程并生成可执行文件。软件项目通常由多个源代码文件和依赖项组成。

2023-12-12 15:34:10 1165 27

原创 gdb使用

学习Linux已经有一段时间了,我们基本上可以编写程序,有时候可能会出现报错的情况,我们学习C语言的使用我们可以用VS来调试,可以解决编译出错问题,那Linux是否有调试功能呢,当然有了,gdb就是一个很好的调试器,那咱们就学习一下gdb咯🤭🤭。⭐gdb的使用流程其实gdb的使用和VS的调差不多🤫🤫咱们先安装gdb吧,到时候咔咔讲,发现连环境都没安装好😶‍🌫️😶‍🌫️。

2023-12-12 10:25:05 168 9

原创 vector类

相信看完博主的string类CSDN⭐主体这里就需要浅谈一下什么vector,基于在数组的问题,当我们创建一个数组时,此时元素的类型已经锁定,而vector就可以很好的解决这个问题。当然vector不仅仅是这些用法,那咱们就看看vector有啥子东西值得我们学习。

2023-12-11 19:58:49 1382 41

原创 Git的使用

在学习Linux的时候,我们大部分都是写一些简单的代码,难一点也就是进度条😁,为保存这些代码,有一个工具叫Git,就是为了保存我的代码,防止走丢。Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。使用Git是作为程序员必备之一的技能。

2023-12-02 15:31:23 2848 64

原创 string的模拟

前面我们已经了解string类,知道string下面的相关接口,Member functions(成员函数),Iterators(迭代器),Capacity(容量),Element access(元素访问),Modifiers(修改器),String operations (字符串操作)。今天咱就手搓一个string类,也是对string类加深印象,大家准备好了没,拿起小本本记好笔记。🤩🤩🤩⭐主体咱还像链表一样建三个文件,具体如下:⭐模拟实现CSDN。

2023-12-02 14:42:52 1288 31

贪吃蛇.mp4

贪吃蛇.mp4

2023-11-14

汉诺塔.mp4

汉诺塔.mp4

2023-05-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除