- 博客(56)
- 收藏
- 关注
原创 C++算法练习:单词识别
/ 按字符串长度排序public:int main()// 使用仿函数排序// 输出:kiwi apple banana orangereturn 0;
2025-08-09 22:37:55
243
1
原创 C++学习之STL学习:map/set
前⾯我们已经接触过STL中的部分容器如:string、vector、list、deque、array、forward_list等,这些容器统称为序列式容器,因为逻辑结构为线性序列的数据结构,两个位置存储的值之间⼀般没有紧密的关联关系,⽐如交换⼀下,他依旧是序列式容器。顺序容器中的元素是按他们在容器中的存储位置来顺序保存和访问的。关联式容器也是⽤来存储数据的,与序列式容器不同的是,关联式容器逻辑结构通常是⾮线性结构,两个位置有紧密的关联关系,交换⼀下,他的存储结构就被破坏了。
2025-08-09 18:21:48
242
5
原创 C++学习之一些继承和多态相关的问题
C++学习之多态-CSDN博客多态(Polymorphism)是面向对象编程的三大核心特性之一,指同一操作作用于不同对象时产生不同行为的特性。多态分为静态多态和动态的多态。类型实现方式绑定时机典型应用静态多态函数重载、模板编译期运算符重载、函数模板动态多态虚函数、继承运行期接口设计、运行时类型处理其中动态多态必须要有:虚函数声明、派生类重写、基类指针/引用的调用//虚函数声明class Basepublic:virtual void func() { /* 基类实现 */ }
2025-08-06 21:13:18
996
2
原创 C++算法学习专题:哈希算法
哈希表就是一个存储数据的容器。哈希算法(Hash Algorithm)是一种将任意长度的数据映射为固定长度值的单向加密函数。它通过特定的数学运算,将输入(也称为"消息")转换为一个固定长度的字符串(通常为十六进制表示),这个字符串称为哈希值或摘要。确定性:相同的输入总是产生相同的输出快速计算:对于给定数据,可以快速计算出哈希值不可逆性:从哈希值无法反推出原始数据抗碰撞性:很难找到两个不同的输入产生相同的哈希值雪崩效应:输入数据的微小变化会导致输出哈希值的巨大差异。
2025-07-29 21:52:05
630
6
原创 C++学习之继承
下⾯我们看到Person是基类,也称作⽗类。Student是派⽣类,也称作⼦类。(因为翻译的原因,所以既叫基类/派⽣类,也叫⽗类/⼦类)// 派生类 继承方式 基类public:int _stuid;//学号int _major;//专业当你不写继承方式的时候默认为私有继承方式。
2025-07-29 10:36:35
1195
4
原创 C++学习之深入学习模板(进阶)
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。【优点】1. 模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生2. 增强了代码的灵活性【缺陷】1. 模板会导致代码膨胀问题,也会导致编译时间变长2. 出现模板编译错误时,错误信息非常凌乱,不易定位错误。
2025-07-26 19:18:37
907
3
原创 Linux学习之Linux系统权限
权限是访问一种资源的时候决定我们能还是不能的问题。命令作用groups [用户名]查看用户的所有所属组id [用户名]显示用户 UID、GID 及组列表usermod -aG 组名 用户名将用户添加到附加组gpasswd -d 用户 组名从组中移除用户newgrp 组名临时切换用户的主组(需有权限)• ⽬录的可执⾏权限是表⽰你可否在⽬录下执⾏命令。• 如果⽬录没有 -x 权限,则⽆法对⽬录执⾏任何命令,甚⾄⽆法 cd 进⼊⽬, 即使⽬录仍然有 -r 读。
2025-07-21 23:57:36
1154
10
原创 Linux学习之认识Linux的基本指令
上一篇博客我们了解并学习了Linux的前世今生、如何安装Linux的云服务器以及利用Xshell登录Linux服务器。这篇博客我们将深入学习Linux,了解它的基础指令。
2025-07-18 21:25:49
1615
4
原创 C++学习之STL学习:stack\queue\priority_queue
官方文档:stack - C++ 参考stack的介绍queue - C++ 参考queue(单端队列)的介绍deque - C++ 参考deque(双端队列)的介绍deque的结构图官方文档:priority_queue - C++ 参考入数据随便入,出数据按优先级高的出队列。而数据大的优先级高,优先出队列int main()//数据大的优先级高;//优先级高的优先出队列pq.push(5);pq.push(3);pq.push(8);pq.push(1);
2025-07-18 09:49:17
653
6
原创 数据学习之队列
栈和队列是两个相似又相反的数据结构类型,但是受限于写栈的时候作者的时间和精力紧张就没有将两者放到一起,所以本篇我们将接着栈的内容继续深入学习与栈相对的另一种数据结构:队列。
2025-07-07 09:25:22
858
8
原创 C++学习之STL学习:list的模拟实现
数据结构学习之双向循环链表-CSDN博客),因为这个类中的成员我们都想要访问,如果想要方便写的话,可以用struct(struct中默认为公开),并且用命名空间封装//当我们不需要也不想要让访问限定符限制的时候//可以用struct来定义类,而不是用classT _data;//数据//指向下一个节点的指针//指向前一个节点的指针同时因为list模拟实现中使用了模板,所以函数的定义也只能在.h文件中()同时切记,模板只能给对应的类或函数使用,是“一次性”的,想再次使用一样的模板必须重新定义。
2025-07-06 18:40:14
887
5
原创 数据结构学习之双向循环链表
list.h//定义数据类型//双向链表结构//节点数据//指向前一个节点//指向下一个节点}LN;//申请结点//判断链表是否为空//这里必须要用到头文件<stdbool.h>//双链表的初始化//初始化1:void init_list(LN** phead);//头节点发生改变,传二级指针;不发生改变传一级指针// phead头节点在双向链表中除非销毁否则不会被改变,所以传一级指针//尾插//头插//尾删//头删//查找//pos之后插入。
2025-07-02 15:20:09
883
5
原创 C++算法学习专题:双指针
双指针(Two Pointers)是一种非常实用且高效的算法思想,主要用于处理线性数据结构(如数组、链表等)中的特定问题。这种技术通过使用两个指针(或索引)在数据结构中协同遍历,能够显著优化算法的时间复杂度。
2025-06-28 21:19:57
757
4
原创 C++学习之STL学习:vector类的使用
之前我们了解到了string类的使用并通过对string常用接口的模拟实现对其底层有更深刻的了解。接下来我们将进一步深入学习STL类的下一个区:vectorvector在某些方面类似于顺序表的功能。
2025-05-28 16:54:03
1148
6
原创 C++学习之STL学习:string类常用接口的模拟实现
上一篇博客我们学习了string类的常见应用,接下来我们将堆对它们的底层进行深入挖掘,并进行模拟实现感兴趣的可以自行去查看。
2025-05-25 21:37:20
1123
7
原创 C语言学习之数据在内存中的存储
在之前操作符的内容中,我们就了解过整数在内存当中的存储,接下来我们来简单总结一下吧。整数的2进制表示方法有三种,即。有符号的整数,三中表示方式均有符号位和数值位,符号位都是用0表示“正”,用1表示“负”。最高一位当做符号位,其余均为数值为。:直接将数值位按照正负数的形式翻译成二进制得到的就是原码。:将原码的符号位不变,其他位依次按位取反即可。:反码+1就得到补码对于整形来说:数据存储在内存之中其实存放的是二进制的补码。因为计算机系统数值一律用补码来表示和存储,使用补码可以将符号位统一处理。
2025-05-24 16:44:25
840
3
原创 C++学习之STL学习:string类使用
我们很明显地发现:s2是不能修改的因为它们的调用关系是这样的//遍历+修改//下标+[]s1[0]++;/*s2[0]++;s1[8];//函数调用相当于s1.1operator[](8)//越界检查s1[20];return 0;题目:初始做法(不通过)在VS上调试可以发现s并没有包括T这是为什么呢?因为scanf和cin输入多个值的时候,默认空格和换行是多个数值的分隔,无法读取空格之后的内容。
2025-05-24 11:16:41
1483
3
原创 Linux学习之Linux入门介绍+Linux云服务器安装
UNIX发展的历史1968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。Multics在多任务文件管理和用户连接中综合了许多新概念。1969-1970年,AT&T的贝尔实验室研究人员Ken Tompson和Dennis Ritchie,在采用很多Multics特点的基础上开发了UINX系统。它运行在小型机上,满足了系统对科研环境的要求。从产生开始,UNIX就是一个有价值的、高效的、多用户和多任务的操作系统。
2025-05-20 14:13:23
925
6
原创 我的创作纪念日
为了记录我的学习过程,我在CSDN中开始了我的博客之旅。出于对于专业知识查到的需求,我了解到了CSDN是什么,在CSDN中接触到了很多有用的知识,对于我的学习很有帮助。在CSDN的博客更新中,我第一次感受到了被人关注到的快乐。尽管中间因为一些个人原因我中断了博客的更新,但是我没有放弃我的博客更新,之后我还会继续更新我的学习记录。尽管现在因为学校考试和大作业的原因,我短暂的放弃了博客更新,但是在未来忙完了之后我还会继续我的博客更新。目前我的学习之余就在写博客记录我的学习过程。日期类实现的代码(C++学习)
2025-05-20 10:27:07
357
2
原创 数据结构学习之链表学习:单链表
在之前顺序表的学习过程中,我们知道顺序表中头插和中插的复杂度是O(N)。那我们可不可以将其降低为O(1)呢?可不可以不增容想用就用想扔就扔而不会浪费一点空间呢?那就是我们今天的内容:链表继我们学习了顺序表之后,接下来我们就来学习顺序表的下一个内容:链表。
2025-05-14 16:00:43
1186
2
原创 C++学习之STL入门简介
STL是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个保罗数据结构和算法的软件框架我们很明显地发现:s2是不能修改的因为它们的调用关系是这样的//遍历+修改//下标+[]s1[0]++;/*s2[0]++;return 0;迭代器的概念与分类迭代器是STL中访问容器元素的通用接口,行为类似指针,但抽象程度更高。迭代器类别正向迭代器(Forward Iterator):单向遍历(如双向迭代器。
2025-05-11 20:06:16
1176
4
原创 C++学习之模板初阶学习
class 类模板名//类内成员定义模板不建议声明与定义分离,容易出问题。int main()//类模板只能显式实例化return 0;
2025-05-10 14:46:26
897
5
原创 C++学习之内存管理
C++之所以区别于C语言设计new和delete本质上还是更好的服务于自定义类型的对象。区别于malloc函数、calloc函数、realloc函数、free函数在于对于自定义类型,new和delete除了开空间外还会调用构造函数。class Apublic:A(int a):_a(a)cout<<"A()构造函数调用:"<<this<<endl;~A()cout<<"A()析构函数调用:"<<this<<endl;int main()
2025-05-10 11:51:43
667
3
原创 C语言实现:打印素数、最大公约数
本片博客起源于作者在经历了学校的测试之后猛然发现自己居然忘记了一些比较基础的代码,因此写了本片博客加强记忆以下算法仅供参考。
2025-05-09 15:13:05
198
1
原创 C语言学习之字符函数和字符串函数
在C语言前面的内容中,我们学习到的库函数主要还是针对输入输出以及数字相关的内容,今天我们来学习一下有关于字符相关的函数,来对字符和字符串进行操作。
2025-05-07 23:15:44
1165
2
原创 (超2万字数详解)C++学习之类与对象
类类似于C语言中的结构体,是由其过渡而来,C++中类是数据和方法的结合。class为定义类的关键字,Stack为类的名字,{}中为类的主题,注意类定义结束时后面分号不能省略(与C中的结构体变量)。类体中内容称之为类的成员;类中的变量称之为类的属性或成员变量;类的函数称之为类的方法或者成员函数。为了区分成员变量,一般习惯上成员变量会加上一个特殊标识,比如成员变量前面或后面加_或者_m等。这并不是C++的规定,具体看项目组和公司的要求。C++中struct也可以定义为类。
2025-05-03 19:22:28
1236
3
原创 数据结构学习之算法复杂度
数据结构是计算机存储和组织数据的方式,指相互之间存在一种或多种特定关系数据元素的集合。没有任何一种单一的数据结构对所有的用途都有用。所以我们要学习所有的数据结构:线性表、树、图、哈希表。
2025-05-02 12:35:49
691
3
原创 C语言学习之动态内存的管理
学完前面的C语言内容后,我们之前给内存开辟空间的方式是这样的。我们发现这个方式有两个弊端:空间是固定的;同时在声明的时候必须指定数组的长度,一旦确定了大小就不能调整的。而实际应用的过程中,我们发现定长的数组往往是不能满足需要的。因此我们需要对内存进行动态化的处理。内存三大区域主要存储的数据类型。
2025-05-01 15:49:21
1219
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人