- 博客(62)
- 收藏
- 关注
原创 【C++】map和set的使用
2.我们这里排序的依据是单词出现的次数,如果我们直接排序,默认pair<string,int>是按照单词的各个字母的ASCII值来排的,显然不是我们想要的效果,以及我们要按单词频率从高到低实现一个降序,所以我们可以考虑写一个仿函数。比如:现在要建立一个英汉互译的字典,那该字典中必然有英文单词与其对应的中文含义,而且,英文单词与其中文含义是一一对应的关系,即通过该应该单词,在词典中就可以找到与其对应的中文含义。
2024-07-18 14:06:58
956
原创 二叉搜索树
关于二叉树的内容,在前面C语言部分我们就已经有所涉猎,所以今天的内容应该算是二叉树的进阶,可能有些小伙伴不知道这个内容的意义,所以我们在具体学之前可以先看看为什么要学这个内容,我认为意义主要有下面两点:1. map和set特性需要先铺垫二叉搜索树,而二叉搜索树也是一种树形结构2. 对二叉搜索树的特性了解,有助于更好的理解map和set的特性好了,废话不多说,开始今天的内容吧~
2024-07-16 17:48:07
862
原创 【Linux】软件包管理器 yum和vim编辑器
至此,关于yum和vim的我们就到这里结束了,不过我们下去之后还需要花大量的时间和精力去学习与熟悉从接下来的博客开始,由于root的权限过大,我们也应该摒弃root超级用户的使用,开始我们自己创建的普通用户之旅~
2024-07-12 20:40:51
801
1
原创 【C++】多态
多态的构成条件多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了 Person。Person对象买票全价,Student对象买票半价。public://虚函数cout << "普通人买票——全价" << endl;public://虚函数的重写/覆盖//三同:函数名、参数、返回值cout << "学生买票——半价" << endl;public:cout << "军人买票——优先" << endl;
2024-07-11 21:10:51
920
原创 【Linux】常见指令收官&&权限理解
1.目录的可执行权限是表示你可否在目录下执行命令。2.如果目录没有-x(可执行)权限,则无法对目录执行任何命令,甚至无法cd 进入目录, 即使目录仍然有-r (可读)读权限(这个地方很容易犯错,我们可能会认为有读权限就可以进入目录读取目录下的文件)3.而如果目录具有-x(可执行)权限,但没有-r(可读)权限,则用户可以执行命令,可以cd进入目录。
2024-07-11 14:39:30
830
原创 【C++】继承
1.继承的概念继承机制是 面向对象程序设计使代码可以复用的最重要的手段它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程以前我们接触的复用都是函数复用而继承的本质则是类设计层次的复用public:protected:// 姓名// 年龄protected:int _stuid;// 学号protected:int _jobid;// 工号int main()
2024-07-09 16:07:46
940
2
原创 【C++】优先级队列&&仿函数
仿函数为less,表示默认情况下priority_queue是大堆(反之,我们如果在这里传的是greater则建小堆)
2024-06-04 22:12:06
741
原创 【C++】模拟实现栈和队列
上面我们用list实现了栈和队列,但是当我们查看文档时,发现Container用的并不是vector或是list,而是deque那么这个deque又是什么呢?deque(双端队列):是一种双开口的"连续"空间的数据结构双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1)它与vector比较,头插效率高,不需要搬移元素;与list比较,空间利用率比较高。
2024-06-04 15:06:52
1435
2
原创 【C++】vector和list的迭代器
我们在学习C++STL部分的时候,在vector和list的部分初步认识了迭代器,以及在初学阶段,会觉得迭代器失效是一个很头痛的问题...所以接下来我们就先从迭代器的使用开始,对迭代器进行一个浅浅的梳理,希望对大家有所帮助~好的,废话不多说,直接开始今天的内容。
2024-05-30 17:06:20
1358
原创 【C++】string类的模拟实现
在之前学习string的使用时,我们会发现明明std中就有swap,为什么string还要再实现一个?说到erase,自然要跟npos联系起来,npos是string类的静态成员变量。insert的代码,我们要注意画图,尤其是关于边界的一些条件的处理,我们要小心。尾插字符串,这里我们需要计算,然后决定开多少空间(直接开2倍可能不够用)默认生成的赋值重载也会导致浅拷贝,所以我们需要实现深拷贝。这里给出string的各个函数定义和实现的代码。开辟新的空间,然后进行拷贝,对旧空间进行释放。
2024-05-14 14:27:25
957
原创 【C++】string类的使用
对于string类的常用接口使用我们就先说到这里,另外,值得在这里强调对于一些接口的使用我们可以去查文档进行理解使用。
2024-05-08 09:06:08
1062
1
原创 【C++】模板初阶
class 类模板名// 类内成员定义// 动态顺序表// 注意:Vector不是具体的类,是编译器根据被实例化的类型生成具体类的模具public :, _size(0){}// 使用析构函数演示:在类中声明,在类外定义。~Vector();// 注意:类模板中函数放在类外进行定义时,需要加模板参数列表if(_pData)
2024-04-22 14:11:27
772
原创 【C/C++】内存管理
本篇学习目标:了解C/C++内存的分布,复习C语言内容管理方式,学习C++内容管理方式、了解operator new与operator delete函数 、new和delete的实现原及其原理、定位new的表达式、最后介绍相关面试题的解析文章目录1. C/C++内存分布2. C语言中动态内存管理方式3. C++中动态内存管理4. operator new, operator delete函数5. new和delete的实现原理6. 定位new表达式7. 常见面试题先来回顾一下,从前学习C语言的时候,我们知道
2024-04-21 14:43:05
733
原创 【C++】类和对象(中)
至此,今天的博客就结束了,关于类和对象(中)的内容确实很多,有些地方也并不容易理解,所以有很多内容恕博主能力有限,无法细说~另外这篇博客其实写了挺久的,也希望大家多多支持~就这样,我们下篇博客见~
2024-04-16 21:03:13
844
原创 【C++】类和对象(上)
/ 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。
2024-04-04 09:32:20
672
原创 【C++】入门C++(下)
本篇博客是C与C++过渡的最后一篇博客,从下一篇博客开始,我们就要进入类和对象的学习本篇博客要分享的东西包括内联函数,auto关键字,基于范围的for循环和指针空值nullptr废话不多说,开始今天的内容~好啦,对于C++入门的内容就先写到这里吧如果文中分析,题解代码有不足的地方欢迎大家在评论区讨论和指正下一篇博客是类和对象希望大家支持~让我们在接下来的时间里一起学习,一起进步吧~
2024-03-31 15:48:21
938
原创 【C++】入门C++(中)
好啦,这篇C++入门中篇的博客就先写到这里吧 我们介绍了C语言没有的两个新的概念:函数重载和引用,希望大家能有所收获~如果文中分析,题解代码有不足的地方欢迎大家在评论区讨论和指正接下来我也会持续更新与C++相关内容的博客让我们在接下来的时间里一起学习,一起进步吧~
2024-03-31 13:51:38
792
原创 【C++】入门C++(上)
好啦,对于C++入门的第一篇博客就先写到这里吧如果文中分析,题解代码有不足的地方欢迎大家在评论区讨论和指正接下来我也会持续更新与C++相关内容的博客让我们在接下来的时间里一起学习,一起进步吧~
2024-03-27 21:22:53
1029
原创 【C语言数据结构】排序
任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。不过这里要说的是,非比较排序都是小众的,局限的,所以下面我就说一种计数排序来给大家感受一下,它也是这三种里面应用性最高的。
2024-03-24 16:22:17
846
原创 力扣OJ题——随机链表的复制
好啦,到此为止,今天的随机链表的复制问题就结束啦,如果文中分析,题解代码有不足的地方欢迎大家在评论区讨论和指正。指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。节点组成,其中每个新节点的值都设为其对应的原节点的值。的链表,每个节点包含一个额外增加的随机指针。虽然时间复杂度为O(N^2),但力扣居然给过了。,该指针可以指向链表中的任何节点或空节点。让我们在接下来的时间里一起学习,一起进步吧~要求:构造这个链表的。
2024-02-21 16:16:11
554
原创 力扣OJ题——环形链表
看到这几个问题,想必小伙伴们也已经意识到:这道题的难点不在于编程,而是数学的逻辑上。到此为止,好像一切都没问题,事实上,博主看过其他的一些博客讲到这里也就结束了,所以说,正如前面所说,这里考察的更多的是一种逻辑,编程写代码反而是最简单的。理由很简单:因为如果slow走了一圈,那fast都走了两圈了,早就追上了。下面是fast与slow的距离变化,当距离为0时,也就意味着追上了。我们用这个slow走一步,fast走两步的快慢指针解决了这个问题,当N是偶数时,最后距离为0,表示fast==slow。
2024-02-20 11:14:52
1330
原创 力扣OJ题——相交链表
请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回。当然,我们也可以将这个代码写得更简略一些:比如将计算长度的代码融入第一步的遍历。这里因为要逻辑更清晰一些才将它们分开的,不过这些也都是小问题而已啦。将上面两步的代码结合起来,这道题就过了。所以接下来我们来实现一下思路二~给你两个单链表的头节点。
2024-02-19 15:39:13
642
原创 力扣OJ题——旋转数组
这里我先单独写一个逆置函数,因为这个功能我们等会要用三次, 单独写一个才更加方便之后的复用~不过这个思路博主已经在力扣上跑过了,最终超出时间限制,所以对于这道题目,时间复杂度为。从函数的定义中,我们可以看出第一个参数是目标,第二个是原,第三个参数是字节数。同样,我们也来分析一下它的时间复杂度,看看它的性能是否值得我们去写。是不行的,我们得用其他的,时间复杂度更低的思路实现~我们知道每次挪动旋转1位的时间复杂度是O(N)先拷后k个,再拷前n-k个用了n再整体拷回,好,这是这个题的第二个思路。
2024-02-17 14:50:25
758
原创 用C语言实现贪吃蛇游戏!!!
大家好呀,我是Humble,不知不觉在CSND分享自己学过的C语言知识已经有三个多月了,从开始的C语言常见语法概念说到C语言的数据结构今天。
2024-01-26 16:42:18
1566
原创 【C语言】基于单链表再次实现通讯录
好了,今天的这个基于单链表实现的通讯录小项目的分享也结束了在学习编程的道路上Humble与各位同行,加油吧各位!让我们在接下来的时间里一起成长,一起进步吧!
2024-01-26 16:35:40
563
原创 C语言进阶——数据结构之链表(续)
hello,大家好呀,我是Humble,本篇博客承接之前的C语言进阶——数据结构之链表的内容(没看过的小伙伴可以从我创建的专栏C语言进阶之数据结构 找到那篇文章并阅读后在回来哦~),上次我们重点说了链表中的单链表,即不带头单向不循环链表还说到了链表的分类虽然有8种,但实际上最常用的还是单链表和双向链表(带头双向循环链表)所以今天我们就来讲讲双向链表的实现吧~好了,今天关于链表的分享就到这里了,如果对大家有帮助就太好啦~在学习编程的道路上Humble与各位同行,加油吧各位!
2024-01-24 16:45:40
717
原创 环形链表的约瑟夫问题
好了,今天关于约瑟夫环的分享就到这里了,如果对大家有帮助就太好啦~在学习编程的道路上Humble与各位同行,加油吧各位!让我们在接下来的时间里一起成长,一起进步吧!
2024-01-24 13:41:41
460
原创 链表的经典算法OJ题
好了,今天关于顺序表的两道OJ题的分享就到这里了在学习编程的道路上Humble与各位同行,加油吧各位!让我们在接下来的时间里一起成长,一起进步吧!
2024-01-23 18:30:33
1079
原创 顺序表的经典算法OJ题
好了,今天关于顺序表的两道OJ题的分享就到这里了在学习编程的道路上Humble与各位同行,加油吧各位!让我们在接下来的时间里一起成长,一起进步吧!
2024-01-23 14:44:53
827
原创 C语言进阶——数据结构之链表
hello,大家好呀,我是Humble 在之前的两篇博客,我们学完了数据结构中的顺序表,还对它进行了一个应用,做了一个通讯录的小项目那今天我们再来学习一个新的数据结构——链表好了,今天关于链表的分享就到这里了在学习编程的道路上Humble与各位同行,加油吧各位!让我们在接下来的时间里一起成长,一起进步吧!
2024-01-21 20:22:42
1200
原创 C语言进阶实战之通讯录项目
好了,今天的这个通讯录小项目的分享就到这里了在学习编程的道路上Humble与各位同行,加油吧各位!让我们在接下来的时间里一起成长,一起进步吧!
2024-01-20 07:45:42
1194
1
原创 C语言进阶——数据结构之顺序表
大家好呀,我是Humble,今天开始进入我们的一个C语言的数据结构的学习 这也算是Humble做C语言专栏开始到现在迈出的一大步我们从这篇博客开始,会讲数据结构中的顺序表,和链表之后会利用这些知识来实战一个项目——通讯录注:这些都是建立在C语言上的,更多的数据结构与算法的知识未来会在分享C++的博客中展开,这可以说是一个预热大家也可以期待一下未来的内容,如果觉得Humble的内容还可以,不妨点个关注 持续关注我的最新博客~好了,废话不多说,开始今天的分享吧~数据结构相关概念。
2024-01-18 15:41:45
1092
1
原创 C语言进阶——chapter8—编译和链接(包含预处理详解哦)
好了,今天的分享就到这里了在学习C语言的道路上Humble与各位同行,加油吧各位!让我们在接下来的时间里一起成长,一起进步吧!
2024-01-16 10:12:22
1027
1
原创 C语言进阶——chapter7——文件操作
磁盘(硬盘)上的文件是文件程序文件、数据文件(从文件功能的角度来分类 的)1.程序文件程序文件包括源程序文件(后缀为.c)目标文件(windows环境后缀为.obj)可执行程序(windows 环境后缀为.exe)简而言之,程序文件就是我们写的.c文件以及中间产生的.obj目标文件和可执行.exe文件2.数据文件程序运行需要从中读取数据的文件,或者输出内容的文件所以数组文件的内容是程序运行时读写的数据注:我们本篇博客讨论的文件都是数据文件,即如何写代码来操作数据文件。
2023-12-13 14:48:46
164
原创 C语言进阶——chapter6——动态内存管理
大家好呀,我是Humble,今天要给大家带来的内容是C语言的动态内存管理在开始之前,我想先跟大家说明这块知识的重要性,在我们之后学习数据结构时,如果想学懂,就一定要掌握三块知识,分别是1.指针2.结构体3.动态内存管理前两块内容是我们前面都有分享过的,今天要给大家讲的就是最后一块内容:动态内存管理好,明确了这三块内容的重要性那么接下面开始我们今天的学习还记得我们在上面的第一点对内存区域的一个粗略的划分的那张图吗?
2023-12-09 12:42:02
103
原创 C语言进阶——chapter5——自定义类型之联合体和枚举
好了,今天的分享就到这里了在学习C语言的道路上Humble与各位同行,加油吧各位!让我们在接下来的时间里一起成长,一起进步吧!
2023-12-02 09:45:56
156
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅