自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二叉树和堆(补充)

的。注意,二叉树习惯把问题切分为子问题。

2025-01-20 23:35:34 631

原创 二叉树和堆

的。注意,二叉树习惯把问题切分为子问题。

2025-01-19 23:17:29 1028 23

原创 算法的时间复杂度和空间复杂度

前面我说过计算的是开辟空间的深度,其实斐波那契和求阶乘递归的深度在参数是N的时候深度都是一样的,只不过斐波那契数列看起来复杂一点,实际上在最后一次函数调用建立栈帧结束要返回的时候,栈帧会销毁,紧接着下一次函数调用建立栈帧就会在这次销毁的地方建立并且复用,还理解不了的话就理解成空间是重复利用的就行,开辟的深度都是N层所以空间复杂度是O(N)二分查找的思想更简单了,每次找一半,最坏找到我们要查的数字时刚好结束,也就是2^x=N,x是次数,N是要查数据总个数,x=logN(注意)logN本质上是。

2025-01-17 18:18:18 1142 8

原创 动态内存管理

我们已经掌握的内存开辟方式有://在栈空间上开辟四个字节//在栈空间上开辟10个字节的连续空间但是上述的开辟空间的方式有两个特点:1. 空间开辟大小是固定的。2. 数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知道,那数组的编译时开辟空间的方式就不能满足了。这时候就只能试试动态存开辟了。(没办法满足动态需求)

2025-01-16 19:34:59 1440 18

原创 自定义类型:结构体,枚举,联合

假设我们已知结构体S3大小是16,c1默认放0偏移处,S3是结构体,要遵循嵌套结构体对其原则,对齐在(最大对齐数8)的整数倍就是8偏移处,还剩一个d,对齐数是8,8*3=24,刚好可以放在24偏移处,最后算出来结构体总大小32,也符合最大对齐数8的整数倍(注意,嵌套结构体时计算的最大对齐数是包含嵌套结构体自身成员的)然后结构体总大小要最大对齐数整数倍(最大对齐数是该结构体成员的对齐数的最大的值-》),看到最大对齐数是4,4*3=12,所以要浪费3个格子,结果是12.在声明结构的时候,可以不完全的声明。

2025-01-15 21:16:05 1135 10

原创 字符串函数和内存函数

介绍一个很牛逼的网站cplusplus,c++的官方库,可以查到99%你在c++遇到的函数(注意我们用这些字符串函数时,可以进入C库-C++参考)这个网站上查询函数,可以看到官方库的函数是怎么个意思,很有价值,比在网上随便搜的正确性要高,不仅可以看到返回值,参数,还有使用场景等等,都可以看。用什么函数就搜什么函数就行,很方便注意我们用这些库函数的时候一定要包含头文件,比如strlen的头文件是string.h,大部分字符串函数都是这个头文件。

2025-01-14 15:34:02 1174 18

原创 指针的进阶

如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。1. sizeof(数组名),这里的数组名不是数组首元素的地址,数组名表示整个数组,sizeof(数组名)计算的是整个数组的大小,单位是字节。数组名是数组首元素的地址,arr[1]拿到的是arr1数组名,再使用下标就能访问数组的元素,很简单。2. &数组名,这里的数组名表示整个数组, &数组名取出的是整个数组的地址。是指针,指针指向的是一个函数,指向的函数无参数,返回值类型为void。

2025-01-13 22:44:54 1701 11

原创 数据在内存的存储

在vs上我们认为没有unsigned就是有符号类型,有unsigned就是无符号类型,有符号类型第一位存储符号位(整数是0,负数是1),无符号类型每一位都是数值位,一个字节等于8比特位,具体的计算过程上图很明显了(注意:有符号类型第一位符号位不参与计算,只算数值位,所以相对无符号类型的最大值会小一半)先算出补码,后截断,再根据类型整型提升,最后打印(以有符号打印需要看最高位,是1说明是负数,需要转化为原码,是0直接打印,以无符号打印直接补码就是原码,所有位都是数值位并且计算)

2025-01-12 22:55:33 1223 19

原创 c++入门

定义命名空间,需要使用到。

2025-01-10 20:10:36 1018 13

原创 程序环境及预处理

程序执行的过程:1. 程序必须载入内存中。在有操作系统的环境中:一般这个由操作系统完成。在独立的环境中,程序的载入必须由手工安排,也可能是通过可执行代码置入只读内存来完成。2. 程序的执行便开始。接着便调用main函数。3. 开始执行程序代码。这个时候程序将使用一个运行时堆栈(stack)(函数栈帧),存储函数的局部变量和返回地址。程序同时也可以使用静态(static)内存,存储于静态内存中的变量在程序的整个执行过程一直保留他们的值。4. 终止程序。正常终止main函数;也有可能是意外终止。

2025-01-07 11:53:36 1178 25

原创 c语言文件操作

我们前面学习结构体时,写了通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯录程序的时候,数据又得重新录入,如果使用这样的通讯录就很难受。每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。指向某个文件的文件信息区(是一个结构体变量)。文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,

2025-01-04 16:46:59 1491 8

原创 stack和queue优先级队列

设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结)

2025-01-02 23:19:10 777 8

原创 list容器

(list文档介绍)1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3. list与非常相似:最主要的不同在于是单链表,只能朝前迭代,已让其更简单高效。4.与其他的序列式容器相比(arrayvectordeque)list通常在任意位置进行插入、移除元素的执行效率更好。5.与其他序列式容器相比,

2024-12-30 20:49:37 975 2

原创 vector容器

capacity的代码在vs和g++下分别运行会发现,

2024-12-27 21:08:07 932 1

原创 string类

C语言中,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可 能还会越界访问。字符串转整形数字字符串相加在OJ中,有关字符串的题目基本以string类的形式出现,而且在常规工作中,为了简单、方便、快捷,基本 都使用string类,很少有人去使用C库中的字符串操作函数。(可复制链接查看string类)1. 字符串是表示字符序列的类。

2024-12-26 22:45:15 1112 1

原创 模版的初步

在编译器编译阶段,对于模板函数的使用,编译器需要根据传入的实参类型来推演生成对应类型的函数以供调用。比如:当用double类型使用函数模板时,编译器通过对实参类型的推演,将T确定为double类型,然后产生一份专门处理double类型的代码,对于字符类型也是如此。

2024-12-24 20:27:51 485

原创 内存管理(new和delete)

3. malloc申请空间时,需要手动计算空间大小并传递,new只需在其后跟上空间的类型即可,如果是多个对象,[]中指定对象个数即可。4. malloc的返回值为void*, 在使用时必须强转,new不需要,因为new后跟的是空间的类型。5. malloc申请空间失败时,返回的是NULL,因此使用时必须判空,new不需要,但是new需。1. malloc和free是函数,new和delete是操作符。2. malloc申请的空间不会初始化,new可以初始化。

2024-12-24 17:14:53 308

原创 yum/apt-get git gcc makefile等工具

c语言-》汇编 gcc -S code.i -o code.s(从预处理结束进行程序翻译,编译工作做完就停下来),生成.s文件。静态库:优点:不依赖库,同类型平台中都可以直接使用,缺点:可执行程序体积较大,比较浪费资源---磁盘资源,内存,网络等资源。gcc -E code.c -o code.i(从翻译开始到预处理做完的时候,就停下来),会生成.i文件。gcc -c code.s -o code.o(从编译结束后到汇编结束,停下来),生成.o文件。make是一个命令,Makefile是一个文件。

2024-12-22 17:34:25 300

原创 linux权限

如果我们想在一个特定的目录,实现资源的共享,系统根目录下的tmp目录,为了实现数据共享将other的rwx权限全放开,会导致别人删除我的文件,没有什么限制在other新建一个权限t,粘滞位,别人就不能删除了。x决定是否可以进入目录,r、决定是否可以看里边的信息,w决定是否可以在此目录新建和删除文件。5.chomd ugoa+-rwx 文件名 修改权限,ugo对应拥有者,所属组,其他。3.普通切换root需要root密码,反之不需要,普通换普通,需要对方的密码。源代码,图片,视频,库,可执行。

2024-12-20 21:53:09 419

原创 初识linux基本指令

13.cat 输入什么,cat就打印什么,从键盘文件读取什么,就向显示器文件打印什么,默认读取的时候,是从键盘文件输入的比如cat < 110.txt,把本来从键盘文件中读入的内容,更改为从文件中输入,是输入重定向。7ls显示文件,ls -d显示自己,ls -ld显示属性自己的。文件=文件内容+文件数据(全都是二进制数据,都要被存储)4.默认登录的时候,所属的目录,就是当前用户的家目录。10.cp是拷贝,mv是剪切,mv可以重命名。1号是命令,2号是系统调用,3号是库函数。5.stat +文件名。

2024-12-20 20:04:13 265

空空如也

空空如也

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

TA关注的人

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