- 博客(60)
- 收藏
- 关注
原创 【C++】map和set详解
set容器:它是一个关联容器,用于存储唯一的元素,且按照一定的顺序排列。set容器中的元素按照默认的排序顺序存储,或者可以通过自定义的排序函数进行排序。set容器实际上是一个红黑树(red-black tree)实现的。set容器中的元素会自动按照键的顺序进行排序,保持元素的有序性。同时,set容器中的元素是唯一的,即相同的元素只能出现一次。map容器:它是一个关联容器,用于存储键值对(key-value pairs)。其中的每个元素都由一个键(key)和一个值(value)组成。
2024-07-06 23:36:44
849
4
原创 【C++】多态详解
必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。
2024-07-03 17:56:39
1101
30
原创 【C++】继承详解
在C++中,继承是一种面向对象编程的重要概念,它允许一个类(称为派生类或子类)继承另一个类(称为基类或父类)的属性和行为。通过继承,子类可以获得父类的数据成员和成员函数,并且还可以添加自己的数据成员和成员函数。public:protected:// 姓名// 年龄// 继承后父类的Person的成员(成员函数+成员变量)都会变成子类的一部分。这里体现出了//Student和Teacher复用了Person的成员。下面我们使用监视窗口查看Student和Teacher对象,可。
2024-06-27 17:31:29
1090
2
原创 【C++】函数模板与类模板
函数模板的定义以关键字template开始,后跟类型参数列表和函数定义。类型参数可以是任意有效的C++类型。函数模板允许在函数的参数列表、返回值类型或函数体中使用类型参数。返回值类型 函数名(参数列表)函数体C++中的类模板是一种用来生成类的蓝图或模板。类模板允许我们定义通用的类,其中的成员和成员函数的类型可以根据用户的需求进行参数化。类模板的定义通常以开头,其中T是类型参数,可以是任何合法的C++类型。然后,在类的定义中,我们可以使用T来表示成员变量的类型、函数的返回类型和参数类型。
2024-06-25 00:35:26
651
原创 【C++】优先队列的使用及模拟实现
优先队列(Priority Queue)是一种高效的数据结构,它是队列的一种扩展,不同之处在于每个元素都有一个相关的优先级。在优先队列中,元素不是按照插入的顺序进行排列,而是按照元素的优先级进行排列,优先级高的元素排在前面。优先队列的定义可以有多种方式,其中一种常见的定义方式是基于堆(Heap)数据结构实现的。堆的根节点是最小或最大元素,即满足最小堆或最大堆的性质。堆的每个节点的值都小于或大于其子节点的值,即满足堆的有序性。
2024-06-22 20:10:28
1256
34
原创 【C++】stack、queue模拟实现
适配器(Adapter)是一种设计模式,用于将一个类的接口转换为客户端所期望的另一个接口。适配器模式允许原本不兼容的类能够一起工作。类适配器:使用多重继承的方式,将被适配类的接口转换为目标接口。适配器继承被适配类,并实现目标接口。对象适配器:通过组合的方式,将适配器对象与被适配对象关联起来,将被适配类的接口转换为目标接口。适配器实现目标接口,并在内部持有被适配对象的实例。当需要使用一个已经存在的类,但其接口与现有代码不兼容时,可以使用适配器模式将其接口转换为目标接口。
2024-06-13 15:31:26
749
6
原创 【C++】stack、queue和deque的使用
Stack是一种数据结构,在计算机科学中经常被使用。Stack的特点是先进后出(LIFO,Last In First Out),它只允许在一端进行插入和删除操作,这一端被称为栈顶。queue(队列)是一种先进先出(FIFO,First-In-First-Out)的数据结构,其中元素按照加入队列的顺序进行处理。队列有两个基本操作:入队(enqueue)和出队(dequeue),分别指元素加入队列和从队列中移除元素。
2024-06-12 16:06:34
1172
36
原创 【C++】list的基本使用
C++中的list是一个双向链表容器。它允许在任意位置进行快速插入和删除操作,并且能够在常量时间内访问任意元素。list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高 效。
2024-06-07 15:09:54
1386
1
原创 【C++】string类的基础操作
C++中的string类是一个用于处理字符串的标准库类。今天我们来学习在C++中string类的常见用法,比如构造、容量操作、遍历访问以及一些修改操作。
2024-03-07 20:13:04
2055
56
原创 【C++】内存管理
MyClass()// 动态分配一个包含5个int元素的数组~MyClass()// 释放之前分配的数组内存空间int main()// 动态分配一个MyClass对象的内存空间,并进行初始化// 使用动态分配的内存空间i < 5;// 释放之前分配的MyClass对象的内存空间,并调用析构函数return 0;
2024-02-20 12:13:28
1336
33
原创 【C++】友元、内部类和匿名对象
内部类是一个独立的类, 它不属于外部类,更不能通过外部类的对象去访问内部类的成员。外部类对内部类没有任何优越 的访问权限。注意:内部类就是外部类的友元类,参见友元类的定义,内部类可以通过外部类的对象参数来访 问外部类中的所有成员。但是外部类不是内部类的友元。内部类可以分为两种类型:成员内部类和局部内部类。
2024-02-16 11:57:10
1343
25
原创 【C++】const、static关键字和构造函数初始化
将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。
2024-02-15 20:37:30
1500
37
原创 【Linux】gdb调试与make/makefile工具
make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。
2024-02-07 22:07:13
1712
37
原创 【Linux】yum与vim命令详解
yum命令是Linux系统中的一个软件包管理器,用于在Red Hat、CentOS和Fedora等发行版中安装、更新和删除软件包。vim是一款在Linux系统中常用的文本编辑器。它具有功能强大、高度可定制的特点,并支持多种编辑模式和插件。
2024-02-01 12:17:54
1082
8
原创 【C++】C++入门基础讲解(二)
在C++中,引用是一种特殊的变量,用于别名一个已经存在的对象或变量。通过引用,可以使用别名来操作原始对象,而不是创建一个新的副本。
2024-01-29 12:33:02
1680
32
原创 【C++】C++入门基础讲解(一)
命名空间的声明使用关键字namespace,后面跟上命名空间的名称,命名空间中的代码在命名空间内部,可以声明和定义类、函数、变量等。使用命名空间内的成员时,需要在前面加上命名空间的名称和作用域解析操作符::。如果不想每次都写命名空间的名称和作用域解析操作符,可以使用using关键字将命名空间中的成员引入当前作用域。
2024-01-26 21:56:55
4359
38
原创 【Linux】用户和文件权限管理
作为Linux系统的管理员账户,root拥有最高的权限。root用户对系统上的所有文件和目录都具有读、写和执行的权限。无论文件的所有者或组是什么,root都可以访问和修改它们。需要注意的是,root用户拥有强大的权限,但也要小心使用。滥用root权限可能导致系统不稳定,数据丢失或安全漏洞。因此,应该尽量避免以root身份进行常规操作,而是使用普通用户账户,并只在需要时切换到root身份。
2024-01-18 21:51:07
1839
30
原创 【C语言】数据结构——排序三(归并与计数排序)
归并排序的基本思想是将待排序的数组分成两个较小的子数组,然后递归地对这两个子数组进行排序,最后将两个有序的子数组合并成一个有序的数组。
2024-01-17 18:02:39
1450
33
原创 【Linux】——基本指令(二)
今天我们学习的指令有vim,head,tail,tree,echo,wc,|,date,cal,find,grep,zip&&unzip,tar,bc,uname -r,shutdown。
2024-01-04 20:45:20
3445
48
原创 【Linux】基本指令了解(一)
今天我们学习的指令有ls,pwd,cd,touch,mkdir,rmdir,rm,man,cp,mv,cat,more,less。Linux是一套免费使用和自由传播的类Unix操作系统,是一个多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
2024-01-03 19:44:40
1305
35
原创 【C语言】数据结构——带头双链表实例探究
定义两个指针next和prev,分别指向该节点的下一个节点和前一个节点,data记录该节点存放的值。
2023-12-30 17:22:19
1454
44
原创 【C语言】数据结构——排序二(快排)
快速排序的时间复杂度为O(nlogn),其中n为待排序序列的长度。在最坏情况下,快速排序的时间复杂度为O(n^2),但通常情况下快速排序是一种高效的排序算法。快速排序是原地排序的算法,不需要额外的空间。
2023-12-29 21:34:41
1458
16
原创 【C语言】数据结构——排序(一)
今天我们来学习排序,包括直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快排以及归并排序。冒泡排序,快排和归并排序我们放在之后分析,今天主要来分析前面的。
2023-12-28 21:56:29
1309
13
原创 【C语言】数据结构——链式二叉树实例探究
链式二叉树(Linked Binary Tree)是一种基于链表实现的二叉树结构。在链式二叉树中,每个节点由三个部分组成:数据、左子节点和右子节点。
2023-12-19 20:57:06
3852
51
原创 【C语言】数据结构——小堆实例探究
堆是一种特殊的数据结构,它可以看做是一个完全二叉树(或者近似二叉树),其中每个节点的值都大于等于(或小于等于)其子节点的值。在一个最大堆中,根节点的值是最大的;在一个最小堆中,根节点的值是最小的。
2023-12-12 21:31:23
2406
58
原创 【C语言】数据结构——栈和队列实例探究
typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。若struct Stack {}这样来定义结构体的话。在申请Stack 的变量时,需要这样写,struct Stack n;若用typedef,可以这样写,typedef struct Stack{}ST;。在申请变量时就可以这样写,ST n;区别就在于使用时,是否可以省去struct这个关键字。//标识栈顶的位置}ST;定义了一个链式队列的数据结构。
2023-11-21 21:23:44
1568
53
原创 【C语言】数据结构——无头单链表实例探究
单链表是一种常见的数据结构,由一系列节点依次连接形成。数据信息和指向下一个节点的指针。单链表的第一个节点称为头节点,最后一个节点没有下一个节点,其指针指向空。类似于火车,火车头连接后一个车厢,再由后面的车厢依次连接。
2023-11-07 18:54:46
1576
48
原创 【数据结构】顺序表实例探究
typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。若struct SeqList {}这样来定义结构体的话。在申请SeqList 的变量时,需要这样写,struct SeqList n;若用typedef,可以这样写,typedef struct SeqList{}SL;。在申请变量时就可以这样写,SL n;区别就在于使用时,是否可以省去struct这个关键字。//给int类型起一个别名——SLDataType
2023-10-31 17:00:14
309
25
原创 【C语言】善于利用指针(三)
*p 两侧的括号不能省略,表示p先与 * 结合,是指针变量,然后再与后面的()结合,()表示是函数,即该指针变量不是指向一般的变量,而是指向函数。
2023-10-22 16:19:47
675
49
原创 【C语言】善于利用指针(二)
数组指针:能够指向数组的指针。数组指针的定义方式与指针的定义方式类似,只不过需要在变量名字之前添加一个数组类型的修饰符。
2023-10-06 17:06:43
477
22
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人