- 博客(38)
- 收藏
- 关注
原创 c++------模板进阶
一个程序(项目)由若干源文件共同实现,而每一个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式模板的分离编译c/c++程序运行时的过程1、增强复用了代码,节省资源,更快的迭代开发,C++的标准库因此产生2、增强了代码的灵活性。
2025-04-14 20:41:17
760
原创 Linux——基础开发工具
在Liunx下安装软件,一个通常的方法就是下载程序的源代码,得到可执行程序。但是这样带过于麻烦,于是有些人把一些常见的软件提前编译好,做成软件包,放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装软件包和软件包管理器,就好比App和应用商店这样的关系yum是Linux下非常常用的一种包管理器,主要应用在Fedora,RedHat,Centos等发行办上Ubuntu主要使用apt作为其包管理器。底行其他命令。
2025-04-14 16:57:54
710
原创 专题三——二分查找
二分查找 在排序数组中查找元素的第一个和最后一个位置x的算法平方根 搜索插入位置 寻找峰值 上峰数组的索引寻找旋转排序数组中最小的组寻找0~n-1 中缺少的值
2025-04-11 15:48:59
786
原创 Linux __命令和权限
是什么:由上图可知操作系统是一款进行软硬资源管理的软件为什么:对下做好软硬件的管理工作(手段)操作系统要给用户提供一个良好的运行环境(目的)什么是良好:稳定 高效 安全目录的可执行权限是表示你可否在目录下执行命令如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入目录,即使这个目录仍然有-r读权限(这个地方容易犯错)而如果目录有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读的权限 即可以执行ls命令,但是没有权限读出目录下的文档。
2025-04-11 15:40:49
1328
原创 c++--------- stack queue
kw=stackkw=stack我们可以观察到stack queue和vector、string、list都不同的是的模板中有一个适配器适配器是一种设计(设计模式是一套被反复使用堆的、多数人知晓的、经过分类编目、代码设计经验的总结),该模式是将一个类的接口转化成客户希望的另一个接口vector优点:下标的随机访问缺点:中间或者头部插入删除效率低/扩容有一定的消耗,可能存在一定的空间的浪费list优点:高效的在任意位置插入删除缺点:不支持小标随机访问/按需申请释放空间。
2025-04-08 17:12:57
825
原创 C++———— Vector
演示: 主要作用:获取第一个数据位置的迭代器和最后一个数据的下一个位置的迭代器。演示:主要作用:rbegin获取最后一个数据位置的迭代器,rend获取第一个数据的前一个位置的迭代器。演示:演示: 注解:capacity的代码在g++和vs下分别运行下会发现,vs下的capacity是按1.5倍增长的,g++是按2倍增长的,由此可以到底每一次增长多少是不确定的,需要看编译器。reserve是负责开辟空间的,如果提前知道需要多少空间可以使用reserve统一开辟,减少vector增容的代价问题resize在开空
2025-03-27 20:57:22
1092
原创 c++内存管理——malloc calloc realloc free new delete operator new operator delete
new delete 和 malloc free 最大的区别是new除了开空间还会调用构造函数,delete除了释放空间还会调用析构函数。(对内置类型基本一样)1.调用operator new函数申请空间。2. 在申请的空间上执行构造函数,完成对象的构造。
2025-02-06 12:30:17
1005
原创 C++——缺省参数、函数重载、引用、inline
用inline修饰的函数叫做内联函数,编译时C++编译器会在调用的地方展开内联函数,这样调用内联函数就不需要建立栈帧从而提升效率。
2025-02-01 11:54:12
659
原创 类和对象(中)---默认函数
构造函数的功能是实例化对象时初始化,并不是创建对象。类似于我们用c语言来写栈和堆时的Init赋值运算符是一个默认成员函数,用于完成两个已经存在的对象直接的拷贝赋值(与拷贝构造最大的不同,拷贝构造是对一个对象拷贝初始化给另一个要创建的对象。
2025-02-01 11:49:27
984
原创 算法带刷——轮转数组
每一次轮转时都将最后一个保存,然后将前一个的数值移到后面一个,直到数组的第一个为空时,我们将最先存储的数据放到第一个中,这样完成了一次轮转,最后用循环来控制次数。我们发现轮转k次就是把倒数第k个后面的(即把后k个)的数据放在前面,再将前size-k个数据放在后面的位置,我们可以定义一个新数组来完成以上操作。倒数第k个后面的(即把后k个)的数据放在前面,再将前size-k个数据放在后面的位置,可以合并成一个操作。这个方法将时间复杂度降到o(n),空间复杂度为o(1)
2024-10-21 17:13:48
390
原创 详解队列(带你五分钟了解队列)
概念:只允许在一段进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的性质。入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一段称为队头。
2024-10-21 14:53:27
620
原创 详解栈(五分钟快速了解栈)
栈是一种特殊的的线性表,其只允许一段插入和删除元素的操作。进行数据插入和删除的一端叫栈顶,另一端叫做栈底。栈遵循先进后出的原则。压栈:栈的插入操作叫做进栈、压栈、入栈。入数据的地方在栈顶。出栈:栈的删除操作叫做出栈。删除数据的地方在栈顶。栈的底层结构:一般是数组(其实数组和链表都可以实现栈,但链表在尾插入时时间复杂度为o(n),用数组来实现更有优势,代价更小)
2024-10-20 15:42:11
434
原创 详解单链表
(1)链式机构在逻辑上是连续的,在物理结构上不一定连续(2)结点一般都是从堆上申请(3)从堆上申请来的空间,是按照一定策略分配出来的,每次申请的代码可能连续,可能不连续。
2024-10-18 12:33:55
210
原创 算法复杂度
m因为在不同的环境、编译器等情况下每次算法运行的时间都会有所不同。我们没有办法算出实际使用时间所以我们假设每一条指令的时间是相同的,执行时间就和执行指令次数和指令执行时间成正比,我们就可以用执行次数来表示程序执行的快慢。即用T(N)函数来表示。计算算法在运行中因为算法的额外临时开辟的空间,因为常规情况下每个对象大小差异不会很大,所以我们用变量的多少来计算空间复杂度。(因为函数运行所需要的栈空间(存储参数,局部变量等在编译时已经确定好了,因此空间复杂度主要通过函数在运行时显示申请的额外空间来确定))
2024-10-13 15:02:07
418
原创 指针之我见(史上最全)
指针也是一个变量,也有地址,我们把指针的地址存储起来就叫二级指针.我们把数组的地址传给指针,指针里存放着数组的地址就叫数组指针。形如int (*p)[10], 该指针的类型是int(*)[10],*p表示p是一个指针,int [10]表示数组指针所指向的是一个大小为10个整形的数组我们将函数的地址传给指针,指针里存放着函数的地址就叫函数指针。形如:int(*pa)(int x, int y)
2024-08-12 15:47:52
540
原创 C语言初级扫雷小游戏详解
因为我们的扫雷小游戏的代码有些长,为了不显得太繁杂,我们分为test.c game.c game.h三个文件test.c写主程序。game.c写游戏的程序。game.h写头文件。
2024-07-31 17:55:08
1010
原创 函数之我见
在写程序的过程中可能有一些功能需要实现但并没用与之对应的库函数就需要我们自定义函数,其实库函数就是我们经常能用到的一些函数,官方进行了统一不需要我们自己写大大提升了效率。
2024-07-25 23:22:44
666
原创 数组之我见
数组是一个相同类型数据的集合:1.数组存放一个或多个数据,但不为0。2.存放数据的类型是相同的。数组分为一维数组、二维数组和多维数组。
2024-07-21 22:08:45
358
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人