- 博客(96)
- 收藏
- 关注
原创 【C++】C++11 包装器
我们目前学习过的可调用对象有三种:函数指针、仿函数以及lambda表达式(实际上也是仿函数),但是这三种可调用对象却又有各自的缺点,比如函数指针类型写起来比较复杂,仿函数的类型不统一,而lambda表达式语法层上就没有类型,所以C++11引入了包装器,主要就是为了封装他们,统一类型。
2024-04-22 09:56:18 1104 61
原创 【C++】C++11右值引用
今天我们正式进入C++11的学习,C++11引入的一个非常重要的语法就是右值引用,在C++11之前的C++版本我们所提的引用都是左值引用,那么右值引用与左值引用又有什么区别呢?什么是左值?什么是右值?右值引用的价值体现在哪里?那么接下来我们就来学习有关右值引用的相关知识。
2024-04-19 14:15:00 1303 61
原创 【C++】C++11 lambda表达式
lambda表达式的引入是为了简化代码,提高代码的可读性,在某种角度上来看,lambda表达式实际上是一个匿名函数。
2024-04-15 09:45:00 1029 58
原创 【C++】C++11可变参数模板
其实我们之前经常使用可变参数模板,C语言的printf函数大家一定非常熟悉,其实这就是一种可变参数模板:那么在C++11引入可变参数模板的设计可以带来什么变化呢?让我们一起来学习下吧!
2024-04-09 09:45:00 1884 73
原创 【C++】C++11类的新功能
在C++11中,类增加了2个新的默认成员函数,没错就是我们上一篇刚刚学习的移动构造与移动赋值,并且新增了一些功能,比如default、delete、final和override等关键字,让我们一起来探讨一下吧!
2024-04-04 08:00:00 2735 67
原创 【Linux】动态库与静态库
本篇文章博主会与大家共同学习动静态库的相关内容,涉及到动静态库的基本知识与特征,动静态库的打包与使用等内容。
2024-04-01 12:15:21 1766 56
原创 【C++】哈希应用之布隆过滤器
布隆过滤器是哈希的又一重要应用,上篇文章我们谈到位图只能处理整型数据的问题,那么对于布隆过滤器来说它结合了哈希与位图,使数据处理扩展到了字符串甚至其他数据类型上。
2024-03-26 16:15:00 2763 76
原创 【C++】哈希应用之位图
哈希是一种解决问题的思想,那么有关哈希的一个重要应用便是位图,该种结构适用于海量数据,数据无重复的场景,通常用来判断某个数据存在或者不存在,但只能处理整型数据。
2024-03-26 09:45:00 1230 44
原创 【C++】如何用一个哈希表同时封装出unordered_set与unordered_map
上次我们模拟实现了闭散列的哈希表与开散列的哈希表,但很明显上次实现的很粗糙功能很简单,迭代器并没有实现,以及泛型编程思想也没有应用,那么对于本篇文章我们要用一个哈希表同时封装出unordered_set 与 unordered_map,对此我们之前已经成功用一颗红黑树同时封装出set与map,大致的思想是类似的,只不过这里会略微复杂一些。
2024-03-24 07:39:19 1552 65
原创 【数据结构】哈希表与哈希桶
本篇文章我们共同学习哈希结构,哈希结构追求更极致的搜索效率。之前学习的结构中搜索的效率取决于搜索过程中元素的比较次数,因此顺序结构中查找的时间复杂度为O(N),平衡树中查找的时间复杂度为树的高度O(logN)。那我们能不能构建一种数据结构,让搜索效率达到O(1)呢。如果构造一种存储结构,该结构能够通过某种函数使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时就能通过该函数很快找到该元素进而达到O(1)的查找效率。接下来就让我们共同学习哈希结构。
2024-03-20 10:00:00 2176 81
原创 【C++】如何用一棵红黑树同时封装出set与map
在之前的学习中,我们了解到set中存储的一般为键K即可,而map存储的一般都是键值对KV,也就是说他们结构是不同的,那么我们如何才能用一颗红黑树同时封装出set与map两种容器呢?简单的说就是模板的使用,对于set存储的,对于map存储的是;那么红黑树我们就可以使用模板,比如RBTree,T就是这个模板类,当set使用时就是K,当map使用时就是pair。那么接下来我们具体地来研究下STL库中是怎样实现的,并且进行模拟实现。
2024-03-15 09:01:17 1985 82
原创 【数据结构】红黑树(C++实现)
如果没有现在的红黑树的话,那么可能set与map底层的数据结构就是AVL树了,那么红黑树的设计为什么能够取代AVL树的地位呢,红黑树的设计又有哪些奥秘,今天让我们一同来探索一下吧!
2024-03-11 09:45:00 1723 72
原创 【Linux】文件周边003之文件系统
系统中大部分的文件是没有被打开的,那么操作系统是如何管理这些没有被打开的文件呢,接下来我们就要开始学习Linux系统对于『 未打开的文件』的管理。
2024-03-09 08:00:00 1648 69
原创 【数据结构】AVL树
本篇文章主要与大家一起学习AVL树-平衡二叉搜索树。我们前面学习二叉搜索树时,了解到如果插入的元素有序或者接近有序,二叉搜索树的结构就会退化成单支树甚至是链表,那么此时搜索的时间复杂度会退化,如果一个二叉搜索树可以一直保持平衡的话,那么他的时间复杂度是logN,即高度次,所以AVL树-平衡二叉搜索树的出现就是为了解决二叉搜索树不平衡的问题,从而保证搜索效率。
2024-03-06 15:20:07 1674 80
原创 【C++】树形关联式容器set、multiset、map和multimap的介绍与使用
本篇文章博主会与大家共同探索STL库中树形结构的关联式容器:set、multiset、map与multimap,其中涉及树形结构的关联式容器的使用与一些特性的讲解介绍。
2024-02-28 17:09:36 1832 70
原创 【算法】基础算法002之滑动窗口(一)
本篇文章主要会讲解滑动窗口的解题思想,滑动窗口实际上就是利用双指针的基础思想,并且利用单调性进行解题的方法。滑动窗口所用到的双指针是用来维护这个所谓的『 窗口』,所以这两个指针是『 同向』且『 不回退』的,这也就决定了滑动窗口解题的时间复杂度最多为O(2N) 即O(N),所以滑动窗口是一种非常优秀的算法思想。那么滑动窗口思想具体的应用,以及如何分析判断是否适用滑动窗口解题呢?
2024-02-18 15:44:15 2351 61
原创 【C++】 为什么多继承子类重写的父类的虚函数地址不同?『 多态调用汇编剖析』
本篇文章主要是为了解答有关多态的那篇文章那块的一个奇怪现象,大家还记得这张图片么?你有没有发现:多继承子类重写的func1函数地址竟然是不同的?按常理讲:我们知道函数地址存储的是函数的指令的位置,这里『 应该是相同』的,才能保证对象在调用时都调用『 子类重写后的』func1方法 ,否则就失去了重写的意义了。所以这里一定存在某些底层设计,那接下来就让我们转到『反汇编 』,来查看以下vs在这里是如何设计的吧。
2024-02-16 11:02:56 1655 54
原创 【Linux】命令行解释器脚本编写
综合前面所学,我们今天来写一个经典的shell脚本,『 命令行解释器』,包含检查内建命令、检查重定向功能。
2024-02-07 10:00:00 1551 21
原创 【Linux】文件周边002之初步理解文件管理(打开的文件)
本篇文章博主将会讲解『 Linux系统是如何管理打开的文件的』,『 进程与文件之间是如何联系的』,『 重定向』以及『 C语言中的FILE结构体』的相关内容。
2024-02-05 15:04:18 1799 61
原创 【C++】继承
本篇文章主要讲解『 C++继承』的相关内容。继承(inheritance)机制是面向对象程序设计中使代码可以复用的最重要的手段,它允许程序员在保持『 原有类特性的基础』上进行『 扩展』,『 增加』功能。这样产生的新类,称『 派生类』(或『 子类』),被继承的类称『 基类』(或『 父类』)。
2024-01-29 09:02:05 1717 70
原创 【C++】反向迭代器模拟实现
每一种容器或适配器都要实现自己的反向迭代器,如果是这样的话代码会不会太冗余了,因为他们的反向迭代器的逻辑都是相同的。
2024-01-25 11:28:00 1606 61
原创 【Linux】文件周边001之系统文件IO
学习『 系统文件IO』之前,我会与大家先复习一下C语言部分文件IO的相关接口,为后面的学习作『 铺垫』。系统文件IO部分,本篇文章会讲解『 基本的系统调用』:open()、close()、read()、write(),有关参数传递涉及到『 位图方式传递』,这部分以前没有学习过,博主也会拿出来简单的学习一下。
2024-01-24 10:32:11 1239 8
原创 新画图不好用?『 图层困扰?』『 剪切板拷贝失败?』旧版画图软件yyds
提供了『 旧版画图下载安装方式』,深受新版画图软件困扰的同学们看过来~
2024-01-24 09:56:23 1498 7
原创 【C++】priority_queue模拟实现过程中值得注意的点
本篇文章旨在记录博主在模拟实现priority_queue适配器中遇到的一些问题,希望与大家共勉。
2024-01-22 16:11:32 1521 50
原创 【C++】stack与queue的模拟实现
stack与queue的实现比较简单,本篇不会有太大的篇幅,但值得我们学习的是『 适配器』的概念。
2024-01-22 14:58:35 1272 39
原创 【C++】List模拟实现过程中值得注意的点
本篇文章旨在记录博主在模拟实现vector容器中遇到的一些问题,都是一些需要注意的细节问题,希望与大家共勉。
2024-01-21 17:43:02 1369 59
原创 【C++】vector模拟实现过程中值得注意的点
模拟实现的意义就是『 让我们更好的使用』,本篇文章旨在记录博主在模拟实现vector容器中遇到的一些问题,都是一些需要注意的细节问题,希望与大家共勉。
2024-01-16 18:38:53 1729 71
原创 【2023回顾】2024,放马过来吧
2023年的学习已经告一段落了,不知道为什么,我总是想要尽快的学习更多知识,『 内心比较浮躁』,学习课程也总想着『 二倍速』快进,信息爆炸的时代,人们获取知识变得异常容易,但也是这份容易,你会看到很多优秀的、不可思议的天才,这让你感觉到自身的渺小与普通,你试图想要跟上他们,但在面临如山如海般庞大的知识面前却又显得如此无力。我喜欢上课比较活跃激情的老师,她的激情可以让我完全地投入,遇到优秀的老师一定要紧紧跟住老师的步伐,不管是学习上乃至职业规划上的都可以向老师请教,但最重要的还是自身的努力;
2024-01-11 16:53:00 1954 33
原创 【算法】基础算法001之双指针
本篇文章主要会讲解双指针的思想,双指针是一种非常优秀的算法思想,有对撞指针和快慢指针两种基本用法。双指针对于有序数据的处理是比较有优势的,当你遇到有序的数据时,你可以尝试着利用双指针或者二分来解题,当然本篇文章只会讲解双指针。那么双指针思想具体的应用,以及为什么双指针适用于有序数组的处理呢?
2024-01-11 15:15:38 2301 67
原创 【Linux】进程周边006之进程地址空间
在之前学习进程概念时我们提到过fork函数,了解了如何创建进程,并且知道了fork之后的父子进程代码共享,当父子对共享的变量做修改时会拷贝一份到自己这再做修改(写时拷贝),但当时对于一个变量为什么能有两个值我们的讲解仍然十分局限,今天在学习完进程地址空间后,我想你就会明白原因所在。
2023-12-20 08:17:44 3711 82
原创 【Linux】进程周边005之环境变量
本篇文章博主将会与大家共同学习环境变量,那么环境变量究竟在扮演着什么样的角色呢?为什么我们在编写C/C++代码时,不需要显式的告诉编译器我们所需要链接的动态静态库在哪,但链接照样可以成功并生成可执行程序,其实这里就是有环境变量的辅助。
2023-12-18 09:45:00 1420 81
原创 【Linux】进程周边004之进程的调度与切换(领略Linux系统进程调度算法的神奇)
上篇文章我们最后提到了进程的并发:多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发。那么Linux是如何完成进程切换的呢?本篇文章博主会与大家共同领略Linux系统进程调度算法之美。
2023-12-15 18:47:54 1489 87
原创 【Linux】进程周边003之进程优先级
本篇文章博主将会讲解进程优先级的概念,我们知道一个CPU只能同时运行一个进程,而进程是由很多个的,所以需要存在进程优先级来确定进程获取CPU资源的顺序。
2023-12-13 08:45:00 326 25
原创 【Linux】进程周边002之进程状态
本篇文章博主将会讲解进程状态,之前我们讲到进程是有生命的,所以他在整个生命期间必然会有状态的变化。那么具体而言什么是状态呢?Linux中包含有那些状态呢?
2023-12-12 08:45:00 279 18
空空如也
netbeans表头字体如何更改
2023-12-30
模拟实现vector遇到的const迭代器问题
2023-12-18
你怎么看csdn博客新星入围博主基本都是搬运抄袭的问题
2023-07-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人