- 博客(26)
- 收藏
- 关注
原创 初识C++|string类的使用及模拟实现
string原型最基本的string类由于编码方式不同,又衍生出不同的string类由此可见,string是一个模板string类——管理字符串的类,是用字符的顺序表实现的在使用string类时,必须包含以及;注意不是!
2024-08-08 17:47:02
308
原创 初识C++|模板初阶
通过实参a1将T推演为int,通过实参d1将T推演为double类型,但模板参数列表中只有。注:如果类型不匹配,编译器会尝试进行隐式类型转换,如果无法转换成功编译器将会报错。一个T,编译器无法确定此处到底该将T确定为int 或者 double类型而报错。该语句不能通过编译,因为在编译期间,当编译器看到该实例化时,需要推演其实参类型。所以当一个匹配既没有非模板函数,也没有函数模板可以匹配到的时候,会。,是编译器用使用方式产生特定具体类型函数的模具。1. 重载的函数仅仅是类型不同,,对于模板函数的使用,
2024-07-19 11:24:18
922
原创 初识C++|类与对象(下)
因为那些你不在初始化列表初始化的成员也会⾛初始化列表,如果这个成员在声明位置给了缺省值,初始化列表会⽤这个缺省值初始化。内部类本质也是⼀种封装,当A类跟B类紧密关联,A类实现出来主要就是给B类使⽤,那么可以考 虑把A类设计为B的内部类,如果放到private/protected位置,那么A类就是B类的专属内部类,其他地⽅都⽤不了。的,不具有交换性,⽐如A类是B类的友元,但是B类不是A类的友元。,如果A是B的友元, B是C的友元,但是A不是B的友元。,不属于某个具体的对象,不存在对象中,存放在。
2024-07-18 21:53:10
920
原创 C/C++内存管理
如果 malloc申请空间成功就直接返回,否则执行用户提供的空间不足应对措施,如果用户提供该措施 就继续申请,否则就抛异常。在申请空间后会调用构造函数完成对象的初始化,delete在释放空间前会调用析构函数完成空间中资源的清理释放。4. malloc的返回值为void*, 在使用时必须强转,new不需要,因为new后跟的是空间的类型。5. malloc申请空间失败时,返回的是NULL,因此使用时必须判空,new不需要,但是new需。类似,但它会分配一块连续的内存空间,并且将分配的内存初始化为零。
2024-07-18 20:19:32
693
1
原创 初识C++|类和对象(中)——类的默认成员函数
要求调⽤这个成员变量的默认构造函数初始化。如果这个成员变量,没有默认构造函数,那么就会报错。说明:C++把类型分成内置类型(基本类型)和⾃定义类型。内置类型就是语⾔提供的原⽣数据类型,如:int/char/double/指针等,⾃定义类型就是我们使⽤class/struct等关键字⾃⼰定义的类型。
2024-07-16 11:35:50
841
1
原创 初识C++|类与对象(上)
如果嵌套了结构体的情况,嵌套的结构体对⻬到⾃⼰的最⼤对⻬数的整数倍处,结构体的整体⼤⼩ 就是所有最⼤对⻬数(含嵌套结构体的对⻬数)的整数倍。的⽅式,⽤类将对象的属性与⽅法结合在⼀块,让对象更加完善,通过访问权限选择性的将其接口提供给外部的⽤⼾使⽤。类是对象进⾏⼀种抽象描述,是⼀个模型⼀样的东西,限定了类有哪些成员变量,这些成员变量只是声明,类定义了⼀个新的作⽤域,类的所有成员都在类的作⽤域中,在类体外定义成员时,需要使⽤。编译器编译后,类的成员函数默认都会在形参第⼀个位置,增加⼀个当前类类型的指针,叫做。
2024-07-16 11:32:18
631
1
原创 初识C++ | 基本介绍、命名空间、输入输出、缺省函数、函数重载、引用、内联函数、nullptr
1979年,当时的正在⻉尔实验室从事计算机科学和软件⼯程的研究⼯作。⾯对项⽬中复杂的软件开 发任务,特别是模拟和操作系统的开发⼯作,他感受到了现有语⾔(如C语⾔)在表达能⼒、可维护性 和可扩展性⽅⾯的不⾜。于是,牛逼的祖师爷决定自己创造语言!1983年,Bjarne Stroustrup在C语⾔的基础上添加了⾯向对象编程的特性,设计出了C++语⾔的雏形, 此时的C++已经有了类、封装、继承等核⼼概念,为后来的⾯向对象编程奠定了基础。这⼀年该语⾔被正式命名为C++。重点。
2024-07-11 17:00:43
636
原创 数据结构 | 超详细讲解七大排序(C语言实现,含动图,多方法!)
注意:两次交换的中间需要进行依次判断,判断maxi是否仍然等于begin,因为经过第一个交换后原begin位置的值已经交换到mini位置去了,如果判断成立,maxi也应该跟随原begin的值的移动移动到mini位置。2.划分两个大小为gap的子数组[begin1,end1],[begin2,end2],这两个数组应当是有序的,对其进行归并,归并完后,继续向后划分两个大小为gap的子数组,继续归并,直到整个数组被遍历完。3.将a[begin]和a[mini]进行交换,将a[end]和a[maxi]进行交换。
2024-06-06 17:39:25
1160
2
原创 数据结构 | 二叉树(基本概念、性质、遍历、C代码实现)
二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。特征:前n-1层都是满的,最后一层可以不满,但最后一层从左到右必须是连续的。一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。:从根开始定义起,根为第1层,根的子结点为第2层,以此类推;为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。:若一个结点含有子结点,则这个结点称为其子结点的父结点;:一个结点含有的子树的根结点称为该结点的子结点;1. 若规定根结点的层数为1,则一棵非空二叉树的。
2024-05-31 17:53:43
860
1
原创 数据结构 | 详解二叉树——堆与堆排序
2.再向下调整(大的上小的下),这样调整后的堆顶元素必为调整范围内的最大值,经过下一轮的首尾元素交换后,就可以放入调整完的区域内。可以看出:节点少的层向上调整得少,节点多的层向上调整得多。可以看出:节点少的层向下调整得多,节点多的层向下调整得少。第一层,2^0个节点,需要向下调整h-1层。第二层,2^1个节点,需要向下调整h-2层。第三层,2^2个节点,需要向下调整h-3层。第h层,2^h个节点,需要向下调整h-1层。第h层,2^h个节点,需要向下调整0层。第三层,2^2个节点,需要向下调整2层。
2024-05-29 22:37:38
2205
1
原创 R语言入门 | 使用 ggplot2 进行数据可视化
geom_bar(mapping = aes(x = cut, fill = cut)) //fill明显更常用。#在geom_smooth平滑曲线图中,可以按照不同的线型绘制出不同的曲线,每条曲线对应映射到线型的。#在geom_smooth平滑曲线图中,可以按照不同的线型绘制出不同的曲线,每条曲线对应映射到线型的。x=<变量名>,y=<变量名>,color=<变量名>,shape,size,alpha(透明度)可以将点的颜色映射为变量class ^^^^^^^^^^^^^
2024-05-29 16:11:56
2006
原创 R语言入门 | 使用 dplyr 进行数据转换
3.1.1准备工作基础•按值筛选观测(filter()•对行进行重新排序(arrange()•按名称选取变量(select()•使用现有变量的函数创建新变量(mutate()•将多个值总结为一个摘要统计量(3.2使用filter()筛选行filter()函数可以基于观测的值筛选出一个观测子集。filter(数据集,条件)注意:用双等号进行赋值,保存数据集3.2.1比较运算符比较运算符:>=<=!(不等于)和==(等于)
2024-05-29 16:11:22
1939
原创 数据结构 | 详解栈实现队列&队列实现栈
step2:此时非空队列中剩下的唯一一个数就是“栈顶”元素,使用QueueFront进行·取值后,直接进行QueuePop删除。step0.先利用假设法假定非空队列notempty和空队列empty,再利用MyStackEmpty函数对进行修正。step1:将notempty队列中的前size-1个元素依次push到empty队列中,再进行删除,实现移动操作。
2024-05-17 23:32:03
415
原创 数据结构 | 详解设计循环队列
队列为满时:tail的后一个为head(注意:这里规定tail指向尾元素的下一个位置)注意此时空间有k+1个,tail和head在进行回绕时,应当是%(obj->k+1)在现有的基础上,队列空和满时tail==head,无法区分,因此我们需要另寻他法。[tail+1]%(N+1)==head(注:这里的N指可用的空间)注意此时空间只有k个,tail和head在进行回绕时,应当是%obj->k。由于我们的tail指向的是尾元素的后一个,所以我们求队尾元素时应该向前找。满判断 obj->size==k。
2024-05-17 22:51:48
381
原创 C语言 | 从零实现贪吃蛇游戏(万字详细拆解分析!)
它⽤于从⼀个特定的标准设备(标准输⼊、标准输出或标准错误)中取得⼀个句柄(⽤来标识不同设备的数值),使⽤这个句柄可以操作设备。首先,我们来梳理一下贪吃蛇游戏的基本功能和游戏流程,将任务一点点细化~(非常推荐用思维导图的方式进行梳理,很清晰!COORD 是Windows API中定义的⼀个结构体,表⽰⼀个字符在控制台屏幕幕缓冲区上的坐标,坐标系。检索有关指定控制台屏幕缓冲区的光标⼤⼩和可⻅性的信息。(0,0) 的原点位于缓冲区的顶部左侧单元格。设置指定控制台屏幕缓冲区的光标的⼤⼩和可⻅性。
2024-04-29 22:58:34
754
1
原创 C语言 | 程序的编译和链接
程序将进行(包括预处理、编译、汇编),两步操作,将源代码转换为可执行程序(.exe):用来执行代码。下文将浅浅解析具体过程~
2024-03-30 15:37:59
356
7
原创 C语言|文件操作
1.前言1.1文件文件根据功能可以划分为两种:1.程序文件如源程序⽂件(后缀为.c),⽬标⽂件(windows环境后缀为.obj),可执⾏程序(windows环境后缀为.exe)。2.数据文件程序读写时的数据。根据数据的组织形式,数据⽂件被分为:2.1.⽂本⽂件在外存上以ASCII码的形式存储,需要在存储前转换,以ASCII字符的形式存储的⽂件。2.2.⼆进制⽂件数据在内存中以⼆进制的形式存储,不加转换的输出到外存的⽂件本篇我们将讨论如何处理数据文件。1.2 文件指针。
2024-03-28 23:12:01
997
7
原创 C语言 | atoi函数使用及其模拟实现
功能:将字符串转换为整型数参数:要转换的字符串的地址返回值:转换后得到的整形数头文件:需要包含头文件<stdlib.h>注意事项:1、该函数首先会丢弃空白字符,直到找到第一个非空白字符,然后,从这个字符开始,取个可选的初始加号或者减号,后跟尽可能多的十进制数字,并将他们返回一个int类型的数值。2、字符串可以在构成整数的字符之后包含其他字符,这些字符将被忽略,并且对此函数的行为没有影响。
2024-03-22 23:38:16
265
2
原创 C语言 | 深度剖析数据在内存中存储
其实超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分 为⼤端字节序存储和⼩端字节序存储,下⾯是具体的概念:⼤端(存储)模式:是指数据的低位字节内容保存在内存的⾼地址处,⽽数据的⾼位字节内容,保存 在内存的低地址处。⼩端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,⽽数据的⾼位字节内容,保存 在内存的⾼地址处。所以,通过上面的例子可以知道,笔者所使用的visual studio是小端存储。
2024-03-20 23:28:01
669
4
原创 C语言入门 | 一文理解指针
int* p //整形指针变量,指针类型为int*,指针指向intchar* p //字符指针变量,指针类型为char*,指针指向charint* p :整形指针变量,指针类型为int*,指针指向intchar* p :字符指针变量,指针类型为char*,指针指向char总结:指向类型* 变量名1.2.2初始化指针变量指针变量在定义时可以赋值,即初始化。可以赋值为“NULL”或“0”。
2024-03-07 18:14:24
779
12
原创 【C语言】扫雷游戏(简易实现)
盘面上有许多方格,方格中随机分布着一些雷。你的目标是避开雷,打开其他所有格子。你可以任意选择一个格子将其打开。打开一个格子后,如果有雷则游戏结束,如果没有雷,则该格子会显示附近区域的雷的个数,你需要继续选择格子进行打开,直至排除所有的雷为止。在C语言中,我们选择用以下元素来进行:棋盘——9*9二维数组有雷格子——“1”无雷格子——“0”未打开格子——“*”
2024-01-13 17:46:38
354
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人