自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【c++】类和对象(七)

参见友元类的定义,

2024-04-02 23:12:33 3000 203

原创 【c++】类和对象(六)深入了解隐式类型转换

🔥个人主页:Quitecoder🔥专栏:c++笔记仓在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值1.2初始化列表那么,为什么要使用初始化列表呢?它的优势在哪里呢?我们来看构造函数对于下面类的初始化:我们发现const成员变量并不能用函数体进行初始化这三个成员既可以在函数体,又可以在初始化列表,但是类中包含以下成员,必须放在初始化列表位置进行初始化:我们知道,这个只是一个声明,定义是对象实例化时候完成的,有些成员,必须在定义的时候进行初始化初始化列表是每个成

2024-03-31 13:57:20 3479 223

原创 【c++】简单的日期计算器

🔥个人主页Quitecoder🔥c++笔记仓朋友们大家好啊,在我们学习了默认成员函数后,我们本节内容来完成知识的实践,来实现一个简易的日期计算器。

2024-03-30 16:33:06 1722 38

原创 【c++】类和对象(五)赋值运算符重载

🔥个人主页:Quitecoder🔥专栏:c++笔记仓什么意思呢,我们来讲解:首先我们定义日期类Date,并实例化两个对象:我们如何判断两个年份相等呢?如果是常规方法,我们会写一个比较函数,来判断是否相同:那如果我们想直接通过用来判断是否相同呢?这里就用到了操作符重载函数名字为:关键字operator后面接需要重载的运算符符号我们发现,直接进行判断时,调用了比较函数但是这里是全局的定义的,这里会发现运算符重载成全局的就需要成员变量是公有的,即我的成员不能是私有的,那么封装性如何保证?这部分是

2024-03-30 01:14:42 2304 158

原创 【Leetcode】单链表常见题

🔥个人主页Quitecoder🔥Leetcode刷题本节内容我们来讲解常见的几道单链表的题型,文末会赋上单链表增删查,初始化等代码。

2024-03-28 22:10:14 3214 91

原创 【c++】类和对象(四)深入了解拷贝构造函数

我们进行调试在这里按F11,我们目的是进入fun1,函数,这里却跳入拷贝构造函数再按f11,才会进入fun1函数中大概过程如下传值传参需要调用拷贝构造fun2函数可以直接进入。

2024-03-27 12:30:10 2962 130

原创 【c++】类和对象(三)构造函数和析构函数

🔥个人主页:Quitecoder🔥专栏:c++笔记仓如果一个类中什么成员都没有,简称为空类我们看下面这个类特性:那么上面所示的代码构造函数如何写呢?如下:这种是不带参数的在我们进行实例化 时,自动调用构造函数完成初始化,我们可以用汇编代码进行查看:我们也可以在其中加入带参数的构造函数,实现函数重载:代码如下:能不能这样定义呢?这里编译错误,即这里并不能与函数的声明区分开,所以书写格式严格按照上述方法来写如果我们将第一个无参格式屏蔽掉呢?代码中出现错误的原因在于,为类定义

2024-03-25 22:57:52 3352 144

原创 【c++】类和对象(二)this指针

🔥个人主页:Quitecoder🔥专栏:c++笔记仓首先我们定义一个日期类date:首先思考,这里打印函数,访问的变量是哪里的?这里访问的是private声明下的吗?并不是,因为这里只是声明,并没有开辟空间,真正访问的是实例化的d1,d2那么我d1,d2如何找到这两个函数呢?这里就与隐含的指针有关了可以理解为,编译器处理后处理为上述的样子,调用的地方,编译器也会处理:它会把调用对象当做形参进行传递这里我们也能知道,为什么d1访问能打印d1,d2访问能打印d2这个东西我们并不陌生,在前面数

2024-03-25 21:06:56 2182 90

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

/ 类体:由成员函数和成员变量组成 };class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数class Dateint year;int month;int day;c++习惯定义成员变量时在其前面加上符号class Dateint year;int month;int day;

2024-03-24 23:11:57 2858 138

原创 【c++入门】引用,内联函数,auto

当然,这里swap函数取名字也可以取x,y,

2024-03-23 15:15:51 2228 132

原创 【c++入门】命名空间,缺省参数与函数重载

这里存在的问题是,

2024-03-21 20:52:23 2763 155

原创 【数据结构与算法】:非递归实现快速排序、归并排序

🔥个人主页🔥上篇文章我们详细讲解了递归版本的快速排序,本篇我们来探究非递归实现快速排序和归并排序。

2024-03-18 22:28:28 4090 168

原创 【数据结构与算法】:选择排序与快速排序

🔥个人主页🔥欢迎来到排序的第二个部分:选择排序与快速排序!

2024-03-16 18:17:50 2609 158

原创 【数据结构与算法】:插入排序与希尔排序

排序的稳定性是指在排序过程中,具有相等键值的元素在排序前后保持相同顺序的特性。简单来说,如果排序前两个相等的元素A和B(A出现在B之前),在排序后A仍然出现在B之前,那么这种排序算法就是稳定的;反之,如果排序后A和B的顺序发生了变化,这种排序算法就是不稳定的。稳定性在某些情况下很重要,尤其是当排序的键值是复合的,即基于多个字段进行排序时。在这种情况下,保持相等元素的初始顺序可能对保持数据的某种有意义的顺序非常关键。

2024-03-14 21:56:41 2396 120

原创 数据结构与算法:链式二叉树

首先我们定义二叉树节点内容:每个节点包含两个指针,指向左子树和右子树左右子树的节点又可以细分为:根,左子树,右子树前序遍历、中序遍历和后序遍历。这些遍历方式指的是节点访问的顺序。我们以一颗树为例来展开讨论首先讨论前序遍历:在前序遍历中,我们首先访问根节点,然后是左子树,最后是右子树。对于上述树的前序遍历,遍历顺序将是:如果用N来代表空,我们可以表示出访问顺序:接下来讨论中序遍历在中序遍历中,我们首先遍历左子树,然后访问根节点,最后遍历右子树遍历顺序:访问完2的左子树,再按照顺序访问根节点2,

2024-03-10 15:46:54 1438 137

原创 数据结构与算法:堆排序和TOP-K问题

交换根节点和最后一个节点之后,新的根节点可能破坏了大堆的性质,因此需要进行调整。

2024-03-05 22:55:45 1095 79

原创 数据结构与算法:堆

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合,n=0时成为空树,当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、……、Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。有一个特殊的结点,称为根结点(A),根节点没有前驱结点。n>0 时根结点是唯一的,不可能存在多个根节点每棵子树的根结点有且只有一个前驱可以有0个或多个后继注意:树形结构中,子树之间不能有交集,否则就不是树形结构这两种情况就是错误的堆是一棵完全二叉树。

2024-03-02 20:49:33 1070 65

原创 数据结构与算法:队列

队列(Queue)就像是排队买票的人群。想象一下你去电影院看电影,人们在售票窗口形成一条线(队列)等待购票。队列遵循一个很重要的原则:先来先服务(First In, First Out,简称FIFO)。这意味着最先到达并排队的人将会是第一个买到票并离开队列的人,随后到达的人则依次排在队伍的后面,等待买票。客服服务应用了一种数据结构来实现刚才提到的先进先出的排队功能,这就是队列队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。

2024-02-21 20:30:47 1134 48

原创 数据结构与算法:栈

在应用软件中,栈的应用非常普遍,比如使用浏览器上网时,会有一个后退键,点击后可以按访问顺序的逆序加载浏览过的网页很多类似的软件,比如word等文档或编辑软件都有撤销的操作,也是用栈的方式来实现的栈是一种特殊的线性数据结构,仅支持在一个位置进行添加元素(称为“入栈”或“push”操作)和移除元素(称为“出栈”或“pop”操作)的操作。这个位置就是栈顶(Top)。由于栈是后进先出(LIFO, Last In First Out)的数据结构,最后一个添加到栈中的元素将是第一个被移除。

2024-02-21 14:41:22 1083 26

原创 数据结构与算法:双向链表

单链表中,一个节点存储数据和指向下一个节点的指针,而双向链表除了上述两个内容,还包括了指向上一个节点的指针带头的双向链表,是指在双向链表的最前端添加了一个额外的节点,这个节点被称为头节点(哨兵节点),但它一般不用于存储实际的数据(或者可以说存储的数据不被使用)。头节点的主要目的是为了简化链表操作的逻辑,避免在处理链表的开始和结束位置时需要进行特殊的条件判断。在没有头节点的普通双向链表中,如果链表为空,则链表的第一个节点(head pointer)直接为NULL,

2024-02-16 19:15:11 1277 45

原创 数据结构与算法:单链表

链表是一种在计算机科学中常用的数据结构,用于存储元素的集合。它与数组相比,链表的元素不是在内存中连续存储的。链表由一系列节点组成,每个节点至少包含两个部分:一个是存储的数据,另一个是指向列表中下一个节点的指针(或引用)。通过这种方式,链表中的节点被串联起来在顺序表中,我们的数据存储在数组中,每个数据在内存中连续存储,意味着可以通过索引直接访问任何元素我们对顺序表进行数据的插入,物理空间不变,数据依次挪动。

2024-02-13 20:06:22 829 40

原创 顺序表:数据结构的建筑积木

而不用修改整个代码中的多个地方。这提高了代码的可维护性。我们展开讨论:假设您在一个较大的项目中定义了一个数据类型别名 SLDataType 来代表 int,并在多个函数和数据结构中广泛使用了这个别名。现在,我们来看看如果需要更改这个数据类型,类型别名如何简化这个过程。

2024-02-03 21:38:58 1110 39

原创 数据结构与算法:复杂度

大O符号,记作O(f(n)),表示随着输入大小n的增加,算法的运行时间或所需空间的增长率与f(n)增长率相同或者更慢。在这里,f(n)是一个数学函数,代表随着输入规模n的变化,算法的资源消耗如何变化。

2024-01-28 00:09:56 1322 43

原创 计组与原理:系统总线

大家好啊,这里来到计组第二部分内容:系统总线。

2024-01-23 18:20:20 1334 39

原创 计组原理:系统概论与基本组成

操作码表示机器所执行的各种操作,如取数,存数,加,减,乘,除,停机,打印等。在计算机科学和软件工程中,抽象是一种基本的概念和设计哲学,指的是隐藏复杂性的过程,同时突出展现系统或组件的核心功能。计算机层次结构通常指的是计算系统的不同分层,每一层执行不同的功能,并建立在下一层的基础上。:计算机的运算速度与许多因素有关,如机器的主频、核数,每个核支持的线程数,吉普森法、CPI(执行一条指令所需时钟周期数)、MIPS(每秒执行百万条指令)、FLOPS(每秒浮点运算次数)下层的实现细节,只暴露所需的功能接口。

2024-01-21 20:45:28 1218 19

原创 流动的代码:文件流畅读写的艺术(三)

当你读写数据时,例如使用 fread 或 fwrite 函数,这些数据会传递通过这个缓冲区,从而提高读写操作的效率。在 I/O 操作的上下文中,缓冲区的主要作用是减少对硬件设备(如硬盘、网络设备等)的直接访问次数,提高数据处理的效率和吞吐量。用途:将格式化的输出发送到指定的文件流中,可以是任何 FILE 类型的流,包括标准输出(stdout)和标准错误(stderr)。如果发生错误,则可能返回负值。数据是按照顺序一个接一个地读取或写入的,通常从文件的开始位置开始,然后逐步向后移动,直到文件结束。

2024-01-04 10:59:45 1029 22

原创 流动的代码:文件流畅读写的艺术(二)文件顺序读写函数

调试如下:如果函数执行成功,则返回 str(指向字符串的指针)。如果读取失败或遇到文件结束符且没有读取任何字符,则返回 NULL。

2024-01-02 16:49:02 937 10

原创 流动的代码:文件流畅读写的艺术(一)

文件可以长久保存数据,即使电脑关机或重启数据也不会丢失,通过文件可以方便地进行数据备份和恢复,以防数据丢失,且文件系统提供了一种组织数据的结构,使得数据检索和管理更加高效。那么,什么是文件呢?文件是电子设备中用于存储数据的一种基本单位。它可以包含文本、图片、音频、视频或其他类型的数据。文件存储在存储介质如硬盘、SSD或者云存储上,通常有一个文件名和扩展名,这些帮助用户和系统识别文件的内容和用途。文件可以被创建、编辑、删除和移动,是数据管理和组织的重要工具。程序文件,数据文件。

2023-12-31 12:24:00 974 4

原创 内存之谜:C语言动态内存管理

动态内存分配允许程序根据实际需要来分配内存。这意味着程序可以根据不同的输入和条件来处理不同大小的数据结构,如数组.下面列举一般的开辟空间的方式:int a =10;在栈空间连续开辟了四个字节大小的空间;int arr[10]={0};在栈空间连续开辟了四十个字节大小的空间;上述开辟空间的特点:接下来我们则引入对c语言中动态内存分配的讲解malloc 是在 C 语言中用于动态内存分配的函数。它的作用是在堆上分配指定字节数的未初始化内存,并返回指向这块内存的指针。如果分配成功,将返回一个指针,该指针可以

2023-12-29 16:10:08 1000 8

原创 打造坚实的基础:C语言的结构体、联合体和枚举

首先我们需要知道,结构体是什么,为什么要用结构体?在编程中,特别是在像C和C++这样的语言中,结构体(struct)是一种用于创建复合数据类型的工具。结构体允许你将多个不同类型的数据项组合成一个单一的实体。这对于组织和管理数据非常有用,尤其是当你需要处理复杂的数据集时。c语言中提供了很多的基本数据类型,当想存储一个复杂的信息,比如一个人的基本信息,那么,结构体就可以对这些信息进行封装结构体的声明,需要用到struct关键词int age;//...

2023-12-02 12:26:41 851 19

原创 数据在内存中的存储

这段代码的原理是,在内存中使用一个整型变量n,然后通过将n的地址强制转换为指向char类型的指针,接着对这个char类型指针所指向内存的内容进行判断。另外,如果有一个int类型的变量和一个unsigned int类型的变量进行运算,int类型的值会被提升为unsigned int类型再进行运算,这是为了避免带符号数和无符号数混合运算时的问题。整形提升是指将较小的整数类型转换为较大的整数类型的过程,在c语言中,当对较小的整数类型进行算朑运算时,这些值会被自动提升为较大的整数类型再进行运算。

2023-11-28 11:17:15 274 25

原创 字符串函数(二)与内存函数

例如,在您之前提到的文件打开失败的例子中,strerror(errno) 会返回一个描述由 errno 表示的错误的字符串。接下来,如果将 strtok 函数的第一个参数传递为 NULL,函数将会继续在剩余的字符串中查找下一个子字符串。memset 是 C 标准库中的一个函数,用于将一块内存的内容设置为指定的值。其中,ptr 是指向要被设置的内存块的指针,value 是要设置的值,num 则是要设置的字节数。其中,dest 是指向目标内存块的指针,src 是指向源内存块的指针,n 则是要被复制的字节数。

2023-11-25 16:49:48 143 4

原创 字符串函数的介绍与模拟实现(一)

strcpy函数是C语言中的一个字符串处理函数,用于将一个字符串复制到另一个字符串中,dest是目标字符串,src是源字符串。需要注意的是,目标字符串dest必须有足够的空间来容纳源字符串src的内容,否则可能会出现缓冲区溢出的问题。如果找到子字符串,则会输出子字符串的位置,如果找不到,则会输出未找到的信息。strstr 函数是 C 语言中的一个字符串处理函数,用于在一个字符串中查找另一个字符串第一次出现的位置。strcat函数,是C语言中的一个字符串处理函数,用于将一个字符串追加到另一个字符串的末尾。

2023-11-24 16:44:38 147 7

原创 指针的梳理

我们可以得出,函数名即为函数的地址那么函数指针的书写格式。

2023-11-22 19:35:27 196 8

空空如也

空空如也

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

TA关注的人

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