自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++模版初阶

如何实现一个通用的交换函数?使用函数重载虽然可以实现,但是有一个不好的地方:重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数。

2024-06-14 09:00:07 121

原创 linux指令2

mv src(文件、目录) dst (路径、文件、目录)src ->路径相当于将这部分内容剪切到路径中,src->文件、目录相当于重命名,重命名后文件还是文件,目录还是目录。

2024-06-14 08:59:55 334

原创 C++的内存管理

对于自定义类型,malloc等函数不能进行初始化,但我们可以用new进行初始化class Apublic:A(int n=4):_a(n):_a(aa._a)_a = aa._a;int main()//调用构造delete p1;//会自动调用析构return 0;new在对自定义类型进行处理时会自动调用构造函数,而delete会自动调用析构函数int main()return 0;

2024-06-08 08:38:35 223

原创 类和对象(二)(C++)

虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量的初始化,构造函数体中的语句只能将其称为赋初值,而不能称作初始化。因为初始化只能初始化一次,而构造函数体内可以多次赋值。

2024-06-08 08:38:21 1100

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

1. 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内 联函数处理。2. 类声明放在.h文件中,成员函数定义放在.cpp文件中,注意:成员函数名前需要加类名::,这些在之后都会经常用到class Datepublic:// 这里的year到底是成员变量,还是函数形参?为了区分开来,会在成员变量前加_来区分,也可以用其他方式。

2024-06-02 16:06:35 1090

原创 c++引用和内联函数

1. inline是一种以空间换时间的做法,如果编译器将函数当成内联函数处理,在编译阶段,会用函数体替换函数调用,缺陷:可能会使目标文件变大,优势:少了调用开销,提高程序运 行效率。2. inline对于编译器而言只是一个建议,不同编译器关于inline实现机制可能不同,一般建议:将函数规模较小(即函数不是很长,具体没有准确的说法,取决于编译器内部实现),可能存在函数体过大inline无法使函数体展开的情况。因为inline被展开,就没有函数地址 了,链接就会找不到,所以函数体可直接写在声明中。

2024-05-26 16:06:05 672

原创 Linux指令初识

Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。tab 快速按两次,可以进行命令补齐和路径补齐(把不知道的路径补齐)根目录的.和..都指向自己,其他目录.指向自己,..指向上级目录。以.开头的文件,为隐藏文件ls -a可以看到,ls -l看不见。两个点:特殊目录:上级目录,cd ..用来进行简单的路径回退。/是目录,可以放普通文件和目录,/里面的目录,也可以。-开头的是普通文件类型,文本文件普通文件的一种。任何一个目录下,都有.和..,新建的空目录也是。

2024-05-26 16:05:42 452

原创 c++函数重载

函数地址依靠函数定义生成,我们习惯在头文件中进行函数声明,将函数定义放在单独的.c文件中,test.c文件中只要调用的函数与头文件函数的参数匹配就行,链接时再去对应的.c文件对指定函数查找,且函数地址只与函数定义有关,这段代码不会报错,就是因为两个函数是不同作用域的,可以同时存在 ,不需要满足重载规则,但如果调用的话会报错,是因为调用时存在函数调用歧义。同一作用域,可以同名,但要满足重载关系。但c++用修饰后的函数名查找,支持重载。下面两个函数构成重载,但存在调用歧义。不同作用域,可以同名。

2024-05-20 17:47:15 175

原创 交换排序、归并排序、计数排序

这里做了一个小优化,通过flag的值来减少运行趟数,防止已经有序的情况下继续比较,最坏时间复杂度N方,最好时间复杂度o(N) ,具有稳定性。

2024-05-20 17:46:50 338

原创 c++中的命名空间与缺省参数

1、概念:在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存 在于全局作用域中,可能会导致很多冲突。在c语言中rand是一个函数名,定义rand的值后会报错 ,两者之间会冲突,这时候使用命名空间就会很好的解决问题,将rand放入一个命名空间后再进行指定访问,如下。2、定义:定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{} 中即为命名空间的成员。此外,命名空间可以包含许多内容,如函数,结构体等,2.展开命名空间的某一个。

2024-05-19 21:40:58 595

原创 二叉树的实现

对于深度为K 的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对 应时称之为完全二叉树。双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;子孙:以某节点为根的子树中任一节点都称为该节点的子孙。节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;节点的度:一个节点含有的子树的个数称为该节点的度;4. 若规定根节点的层数为1,具有n个结点的满二叉树的深度,h=

2024-05-17 23:30:58 566

原创 插入排序和选择排序

一、插入排序。

2024-05-17 23:30:00 180

原创 循环队列的实现(数组)

循环队列实现。循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。可以用数组实现,也可以用循环链表实现假定数组开辟了n个空间,由于队列空和满时候的rear和front的值,所以在数组中额外开辟一个空间,以便区分空和满FrontRear。

2024-05-15 19:11:06 244

原创 堆的概念及实现

堆是一种完全二叉树的数据结构,可以分为大堆和小堆,基于堆可以实现堆排序大堆:父亲节点都大于等于孩子节点的值小堆:父亲节点都小于等于孩子节点的值堆在物理结构上是数组存储,但逻辑结构上是二叉树。

2024-05-15 19:10:57 270

原创 基于顺序表对通讯录的实现

实现通讯录前,首先要对顺序表的基本功能进行了解。

2024-05-10 20:44:46 226

原创 队列基本功能的实现

队列是先入先出的数据结构,队列的实现一般是通过链表来实现,从链表尾节点入数据,链表头结点出数据,以下是链表的基本功能。需要注意的是,队列的实现只需要尾插和头删的实现,所以在这里可以额外设置一个尾节点,只进行尾插而不用尾删是非常方便的。

2024-05-01 11:47:01 10 1

原创 栈基本功能的实现

栈的实现

2024-04-30 16:14:17 107

原创 快慢指针的具体应用

以下几道题目是对快慢指针应用的具体详解,题目来源为leetcode。

2024-04-26 22:19:26 410 1

原创 双向链表功能的实现

为了方便书写,先用typedef 将结构体名称化简,为了方便对结构体中的类型进行改变,用typedef定义一个数据类型,如以下代码,这里仅对int数据类型分析由上可知,除了初始化时是传的二级指针,其他情况是一级指针,这是因为初始化的时候需要创建一个哨兵位,并且需要修改哨兵位的值,在之后的功能中不需要对头结点的值进行改动,所以传一级指针,之后也一样。

2024-04-24 21:33:17 270 1

原创 贪吃蛇代码的简单实现

Windows这个多作业系统除了协调应⽤程序的执⾏、分配内存、管理资源之外,它同时也是⼀个很⼤的服务中⼼,调⽤这个服务中⼼的各种服务(每⼀种服务就是⼀个函数),可以帮应⽤程序达到开启 视窗、描绘图形、使⽤周边设备等⽬的,由于这些函数服务的对象是应⽤程序(Application),所以便 称之为Application Programming Interface,简称API函数。WIN32API也就是MicrosoftWindows 32位平台的应⽤程序编程接⼝。

2024-04-20 21:00:00 554

原创 文件操作详解

如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失 了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化的保存,我们可以使⽤ ⽂件。

2024-04-06 17:28:01 864 1

原创 自定义类型:结构体

对齐规则:1. 结构体的第⼀个成员对⻬到和结构体变量起始位置偏移量为0的地址处2. 其他成员变量要对⻬到某个数字(对⻬数)的整数倍的地址处。对⻬数=编译器默认的⼀个对⻬数与该成员变量⼤⼩的较⼩值。(vs中默认对齐数为8)3. 结构体总⼤⼩为最⼤对⻬数(结构体中每个成员变量都有⼀个对⻬数,所有对⻬数中最⼤的)的 整数倍。4. 如果嵌套了结构体的情况,嵌套的结构体成员对⻬到⾃⼰的成员中最⼤对⻬数的整数倍处,结构体的整体⼤⼩就是所有最⼤对⻬数(含嵌套结构体中成员的对⻬数)的整数倍。为什么存在内存对齐?

2024-04-03 00:00:00 203 1

原创 巩固位操作符和移位操作符知识的几道题目

【代码】巩固位操作符和移位操作符知识的几道题目。

2024-03-29 20:30:14 207 1

原创 字符串函数具体讲解

sep参数指向⼀个字符串,定义了⽤作分隔符的字符集合:strtok函数找到str中的下⼀个标记,并将其⽤ \0 结尾,返回⼀个指向这个标记的指针;是将字符串追加到另一个字符串末尾的函数,注意:源字符串必须以 '\0' 结束;字符串以 含 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前⾯出现的字符个数(不包含'\0',返回值是无符号整数,使用时包含头文件string.h。函数原型:char*strstr(const char *str1,const char *str2)

2024-03-27 20:52:40 432

原创 qsort函数使用及模拟实现

函数原型为void qsort(void *base,size_t num,size_t width,int ( *compare)( const void *,const void *)),它是能对任意数据进行排序的函数,其中base是数组首元素地址,num是数组元素个数,width是数组一个元素所占字节大小,最后一个是函数指针,并且qsort函数默认是升序排序。以下是对整形数据排序,但模拟实现可对任意数据进行排序。二、qsort函数的模拟实现。一、qsort函数的使用。

2024-03-21 22:05:22 186 1

原创 c语言内存函数

函数声明:void * memcpy(void * destination,const void * source,size_t num)函数声明:void *memmove(void * destination,const void * source,size_t num)函数声明:int memcmp(const void *ptr1,const void * ptr2,size_t num)函数声明:void *memset(void * ptr,int value,size_t num)

2024-03-19 08:00:00 328

原创 整数和浮点数在内存中存储

E的类型为unsigned int,但E是可以出现负数的,所以IEEE754规定,存⼊内存时E的真实值必须再加上 ⼀个中间数,对于8位的E,这个中间数是127;对于11位的E,这个中间数是1023,eg:当E为10时,保存为32位浮点数时,E的值就需要加127再转化为二进制。整数的二进制有三种表示方法,即原码、反码、补码,其中高位为符号位,正数符号位为0,负数符号位为1。1、E全为0:E的值1-127或者1-1023,有效数字M不加1,即表示接近于0的很小很小的数字。

2024-03-18 20:29:53 302

原创 指针知识点汇总2

二维数组,二维数组的数组名为第一行元素的地址,对二维数组,有*(*(arr+i)+j)=arr[i][j],且二维数组是连续存放的。数组指针:存放数组地址的指针,eg:int (*arr)[4]---[]优先级高于*函数指针数组,eg:int (*p[4])(),即存放函数指针的数组。指针数组:存放指针的数组,eg:int *arr[4]多级指针以此类推,即存放上一级指针的地址。二级指针,即为存放一级指针地址的指针,

2024-03-15 21:27:07 337 1

原创 指针知识点汇总1

野指针:指向位置不可知(未初始化、越界访问、指向空间释放)规避 野指针可将指针及时置为NULL ,可用assert (p!const修饰指针变量:const int* p //int *const p//const int const* const p。指针变量类型的意义:1、解引用时访问几个字节 2、指针加减整数跳过几个字节(指针减指针是中间的元素个数)指针变量的大小去接于地址的大小,32位平台下是4个字节,64位平台下是8个字节,与类型无关;对于一维数组,*(p+i)==p[i]

2024-03-15 20:55:42 481

空空如也

空空如也

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

TA关注的人

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