自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++】map和set的使用

C++中的关联式容器是一种可以存储键-值对的容器,它使用键来快速检索值。与序列式容器不同的是,其里面存储的是<key, value>结构的键值对(不懂的可以去看看上期的博客),在数据检索时比序列式容器效率更高。C++标准库提供了四种关联式容器:std::set、std::multiset、std::map和std::multimap。std::set:std::set是一个基于红黑树实现的有序集合,它存储唯一的元素。元素按照默认的比较函数进行排序,也可以通过自定义比较函数进行排序。

2024-07-06 23:32:52 969 11

原创 【C++】二叉搜索树的模拟实现

每个节点最多有两个子节点,分别称为左子节点和右子节点。若它的左子树不为空,则左子树上所有节点的值都小于根节点的值。若它的右子树不为空,则右子树上所有节点的值都大于根节点的值对于树中的任意节点,它的左子树中的所有节点的值都小于该节点的值,它的右子树中的所有节点的值都大于该节点的值。它的左右子树也分别为二叉搜索树。这些性质确保了二叉搜索树中的数据按照一定的顺序排列,左子树中的节点值小于父节点,右子树中的节点值大于父节点。这样的性质使得二叉搜索树能够提供高效的查找、插入和删除操作。

2024-07-05 00:20:40 682 1

原创 【C++】多态(详解)

多态的概念:多态(polymorphism)是C++中面向对象编程的一个重要概念,它指的是同一种消息(方法调用)在不同的对象上产生不同的行为。这种特性使得程序设计更加灵活,提高了代码的可扩展性和可维护性。(通俗来说,就是多种形态, 具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态)。在C++中,虚函数是一种特殊的成员函数,用于实现多态性。通过将基类的成员函数声明为虚函数,可以在派生类中对该函数进行重写。当通过基类指针或引用调用虚函数时,实际调用的是相应派生类中的函数。

2024-07-03 17:46:36 1297 14

原创 【C++】继承(详解)

C++中的继承是一种面向对象编程的特性,它允许一个类(子类)继承另一个类(父类)的属性和方法,并且可以添加自己的属性和方法。通过继承,子类可以重用父类的代码,减少重复编写代码的工作量。在C++中,使用关键字"extends"可以声明一个类继承另一个类。子类将自动继承父类的非私有成员和方法,并可以通过重写(override)父类的方法或添加新方法来实现自己的行为。(光看文字大家肯定还是觉得晦涩难懂的,我们直接看代码)

2024-06-27 17:11:04 1309 20

原创 【C++】模板详解

模板是C++中的一种编程工具,用于在编译时实现泛型编程。它允许程序员编写与特定数据类型无关的代码,以便在不同的情况下重用和适应不同的数据类型。模板可以用来定义函数模板和类模板。函数模板允许在不同的数据类型上重复使用同一段代码,而类模板允许在需要时使用不同的数据类型实例化。使用模板的好处是可以提高代码的重用性和灵活性。它允许程序员编写通用的算法和数据结构,可以适应不同类型的数据,而无需为每种类型编写不同的代码。.........

2024-06-25 00:21:06 1131 10

原创 【C++】STL中优先级队列的使用与模拟实现

C++中的优先级队列是一种特殊的数据结构,它类似于队列,但是元素按照优先级进行排序。在优先级队列中,元素的插入被赋予了一个优先级值,具有较高优先级的元素将排在较低优先级的元素之前(用大白话讲,就是你队列中的元素按照某种要求进行了对应的排序)。C++中的优先级队列通常使用堆(heap)作为底层实现,可以是最小堆或最大堆。最小堆意味着优先级值较小的元素具有较高的优先级,而最大堆则相反。优先级队列的主要操作是插入和删除最高优先级的元素。

2024-06-22 19:49:37 1093 18

原创 【C++】STL中stack和queue(适配器版)的模拟实现

适配器是一种设计模式,也是一种编程工具,用于将一个类的接口转换成另一个类的接口。适配器模式允许不兼容的类之间能够协同工作。在C++中,适配器是指通过改变容器的接口使其适用于不同的需求。适配器可以封装容器,以提供一种更简单、更有限的功能接口,或者可以通过改变容器的工作方式来满足特定的需求。迭代器适配器:用于改变迭代器的行为,如reverse_iterator适配器用于反向遍历一个容器。容器适配器:用于改变容器的接口,如stack适配器用于实现堆栈功能。

2024-06-13 15:17:51 689 34

原创 【C++】STL中stack、queue、deque的使用

在C++中,deque(双端队列)是一种线性容器,允许在两端进行插入和删除操作。deque是 “double-ended queue” 的缩写。deque类似于vector,但不同之处在于deque允许在容器的前端和后端进行高效的插入和删除操作,而vector只支持在末尾进行插入和删除操作。deque还提供了随机访问元素的能力,类似于数组。deque的主要特点包括:在两端进行高效的插入和删除操作。随机访问元素的能力。动态分配存储空间,自动扩展和收缩容量。

2024-06-12 16:06:15 674 23

原创 【C++】STL中List的基本功能的模拟实现

在前面学习了STL中list的使用方法,现在我们就进一步的讲解List的一些基本功能的模拟实现,这一讲博主认为是最近比较难的一个地方,各位一起加油。

2024-06-07 17:20:42 1150 2

原创 【C++】STL中list的使用

在C++中,list是一个双向链表容器(带头双向链表如下所示)。它是C++标准库中的一种容器类型,可以用来存储和管理数据。list的特点是可以高效地执行插入和删除操作,但是在访问和搜索元素方面相对较慢。list的元素类型可以是任意类型,包括基本数据类型和自定义的对象类型。list容器提供了一系列的成员函数和操作符,可以用于在链表中插入、删除和访问元素,以及对链表进行遍历和操作。通过使用list容器,可以方便地实现一些功能,如实现队列或栈、排序和合并链表等。由于其特殊的数据结构,list。

2024-06-07 15:16:24 1292 22

原创 【C++】STL中vector常见功能的模拟实现

在上一篇中我们讲到了Vector的一些常见功能的使用方式,今天为了进一步的去学习Vector和能够更深度的去理解Vector的一些底层的原理。

2024-06-02 17:41:15 897 30

原创 【C++】vector常见的使用方式

在C++中,vector是一种动态数组容器,可以存储一系列具有相同数据类型的元素。它提供了一些操作函数,如插入、删除、访问等,使得对数组进行操作更加方便和灵活。可以在运行时动态调整大小,不需要事先指定大小;可以自动处理内存分配和释放,减少手动管理内存的工作量;提供了更多的操作函数,如插入、删除、查找等;可以通过下标访问元素。int main()cout << "删除前" << endl;cout << "删除后" << endl;// 删除 vec 的最后一个元素。

2024-05-28 16:53:16 1207 28

原创 【C++】string类的模拟实现

在上一篇中我们讲到了string类的使用方法,今天我们将进一步的去学习string类,去底层看看它顺带模拟实现部分的内容。

2024-03-17 22:11:25 1269 29

原创 【C++】string类的使用

在前面我们说过,前面的绝大部分内容都是在为了后面真正进入C++这块大门做铺垫,今天我们将正式的步入。

2024-03-07 20:54:21 1677 55

原创 【C++】内存管理

结论申请空间时:malloc只开空间,new既开空间又调用构造函数初始化。释放空间时:delete会调用析构函数,free不会.public:Myclass()//默认构造cout

2024-02-20 12:11:14 1276 30

原创 【C++】类和对象(五)友元、内部类、匿名对象

前面我们说到类和对象是一个十分漫长的荆棘地,今天我们将走到终点,也就是说我们对于C++算是正式的入门了。

2024-02-16 21:23:55 1033 34

原创 【C++】类和对象(四)

在类和对象中,我们走过了十分漫长的道路,今天我们将进一步学习类和对象,类和对象这块荆棘地很长,各位一起加油呀。

2024-02-15 11:57:06 1330 48

原创 【Linux】环境基础开发工具的使用之gdb详解(三)

上一篇文章中我们讲解了Linux下的gcc与g++的使用,今天我们将进一步的学习。

2024-02-07 11:45:13 1683 60

原创 【C++】类和对象之运算符重载(三)

在前面我们知道在类和对象中有六个默认成员函数,并学习了其中三个构造函数、析构函数、拷贝构造函数,今天我们将进一步的学习.赋值运算符重载。

2024-02-04 11:53:49 828 12

原创 【Linux】环境基础开发工具的使用之gcc详解(二)

上一篇文章中我们讲解了Linux下的vim和yum的工具的使用,今天我们将在上一次的基础上进一步的讲解开放工具的时候。

2024-02-02 11:46:49 1383 11

原创 【Linux】环境基础开发工具的使用(一)

在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序。但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装。

2024-02-01 12:27:37 1611 45

原创 【C++】类和对象之构造函数、析构函数、拷贝构造函数(二)

在上一篇我们对于C++中类和对象有了一个初步的了解,今天我们将进一步的学习,今天我们目标是对构造函数、析构函数、拷贝构造函数进行一个初步学习在后面也会进一步的学习,一起加油呐!

2024-01-31 15:59:45 1164 6

原创 【C++】类和对象(一)

C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题,而在C++中C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成,通俗的理解C语言好比送外卖我们需要关注如何下单如何拿,而C++只需要关注如何点外卖。C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。比如:之前在数据结构初阶中,用C语言方式实现的栈,结构体中只能定义变量;class 类的名称 {//类体:成员变量--属性 成员函数---功能 }

2024-01-30 12:09:14 1401 47

原创 【C++】引用、内联函数、auto关键字等

在前面我们讲解了C++入门基础的一些学习例如命名空间、缺省参数、函数重载等。今天我们将进一步的学习,跟着博主的脚步再次往前迈一步吧。

2024-01-29 12:30:57 906 28

原创 【C++】入门基础

C++是一种通用的编程语言,它是一种高级、静态类型的编程语言,同时也是一种面向对象的语言。C++是C语言的扩展,它继承了C语言的语法和功能,并添加了许多新的特性。C++支持面向对象的编程范式,包括封装、继承和多态性。它还提供了许多其他功能,如异常处理、模板元编程和标准模板库(STL),使程序员能够更高效地编写复杂的程序。C++具有高性能和灵活性,可以用于开发各种类型的应用程序,包括桌面应用程序、嵌入式系统、游戏、图形界面应用程序、操作系统和网络应用程序等。

2024-01-26 21:54:20 8992 66

原创 【Linux】权限的深度解析

在此之前我们学习了一些常用的。

2024-01-18 22:02:07 2888 45

原创 【数据结构】归并排序的两种实现方式与计数排序

在前面我们讲了各种常见的排序,今天我们就来对排序部分收个尾,再来对归并排序通过递归和非递归的方法进行实现,与对计数排序进行简单的学习。

2024-01-17 17:41:50 1347 36

原创 【Linux】常用的基本命令指令②

前面我们学习了Linux的部分指令,今天我们将接着上次的部分继续将Linux剩余的基本指令.

2024-01-04 20:43:07 1222 24

原创 【Linux】常用的基本命令指令①

从今天开始,我们逐步的学习。

2024-01-03 19:42:50 1457 32

原创 【数据结构】双向带头循环链表的实现

到这里我们可以发现,当我们写了一个插入之后会发现,那双向链表的头插和尾插,我们可以直接用我们刚刚写的插入的函数直接来实现,就完全没必要单独写尾插和头插了,至于为什么放在最后才说,是因为作者想和大家一起锻炼一下自己的思维能力,这里直接放代码就不演示了。void ListPushBack(LTNode* pHead, LTDatatype x)//双向链表尾插//直接再phead之前插入即可void ListPushFront(LTNode* pHead, LTDatatype x)//双向链表头插。

2023-12-30 17:20:39 1176 10

原创 【数据结构】快速排序(4种方式实现)

任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。

2023-12-29 20:54:20 1832 30

原创 【数据结构】插入排序、选择排序、冒泡排序、希尔排序、堆排序

生活中我们总是会碰到各种各样的排序,今天我们就对部分常用的排序进行总结和学习,今天的内容还是相对比较简单的一部分,各位一起加油哦!

2023-12-28 21:46:21 803 31

原创 【数据结构】二叉树的模拟实现

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。光看文字可能大家理解不了,我们看下图。二叉树是一种常见的树型数据结构,由若干个节点组成,每个节点最多有两个子节点,分别称为左子节点和右子节点。每个节点最多有两个子节点,且子节点的位置是固定的。左子节点在父节点的左边,右子节点在父节点的右边。二叉树的子树也是二叉树。二叉树的每个节点都有一个值,可以是任意类型的数据。

2023-12-19 21:07:45 1848 47

原创 【数据结构】堆的模拟实现

堆(Heap):我们可以通俗的理解成一种二叉树,但最大值或最小值是存在上面的,且堆中某个节点的值总是不大于或不小于其父节点的值。并且堆总是一棵完全二叉树。光看文字我们可能无法很清晰的理解堆,我们来看下图。

2023-12-12 21:30:05 336 18

原创 【数据结构】栈和队列的模拟实现

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出的原则(如下图所示)。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出(我们可以通俗的理解成一头进一头出,先进去的先出去)。入队列:进行插入操作的一端称为队尾。出队列:进行删除操作的一端称为队头。具体如下图。

2023-11-21 21:22:08 563 27

原创 【数据结构】单链表之--无头单向非循环链表

前面我们学习了动态顺序表并且模拟了它的实现,今天我们来进一步学习,来学习单链表!一起加油各位,后面的路只会越来越难走需要我们一步一个脚印!

2023-11-07 18:53:05 666 53

原创 【数据结构】顺序表的学习

在之前我们学习了C语言的各种各样的语法,因此我们今天开始学习数据结构这一个模块,因此我们就从第一个部分来开始学习"

2023-10-31 16:41:31 450 46

原创 【C语言】用函数实现模块化程序设计

C语言要求,在程序中所用到的所有函数,必须“先定义,后使用”。例如max函数去求两个数的较大者,必须事先先按规范对它进行定义,指定它的名字、函数返回值类型、函数实现的功能以及参数的个数与类型,将这些信息通知编译系统。这样,在程序执行max时,编译系统就会按照定义时所指定的功能执行。如果事先不定义,编译系统怎么能知道max是什么、要实现什么功能。定义函数应包括以下几个内容指定函数的名字,以便以后按名调用指定函数的类型,即函数的返回值类型指定函数的参数的名字和类型,以便在调用函数时向它们传递数据。

2023-10-22 16:21:14 1103 43

原创 【C语言】文件的操作与文件函数的使用(详细讲解)

磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。输出流(stdout):简单的理解就是你把你C语言所写的程序,传递给了某个文件就是输出流。如下图:输入流(stdin):你用这C语言程序读取文件,就是输入流,如上图所示。标准错误流(stderr)

2023-10-12 18:13:45 885 61

原创 【C语言】利用数组处理批量数据(字符数组)

用来存放字符数据的数组是字符数组。在字符数组中的一个元素内存放一个字符。定义字符数组的方法与定义数值型数组的方法类似。char c[10];c[0] ='I';c[1] =' ';c[2] ='a';c[3] ='m';c[4] = ' ';c[5] = 'h';c[6] ='a';c[7] ='p';c[8] = 'p';c[9] = 'y';以上定义了c为字符数组,包含了10个元素。赋值以后数组的状态如下图所示:由于字符型数据是以整数的形式(ASCII代码int c[10];

2023-10-06 16:47:17 1000 39

空空如也

空空如也

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

TA关注的人

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