自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 模板进阶(C++)

一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。【优点】1.模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生2. 增强了代码的灵活性【缺陷】1. 模板会导致代码膨胀问题,也会导致编译时间变长——每实例化出一个模板类(函数),就会多个几十或上百行的代码。2. 出现模板编译错误时,错误信息非常凌乱,不易定位错误。

2024-08-30 18:01:03 1031

原创 二分查找算法

- 力扣(LeetCode)先使用左端点模板找左端点任取一个点(X),他将序列分成两个部分,该点有两个状态1.该点小于【目标】序列被分为【begin,X】,(X,end】(start指第一个元素,end指最后一个元素)此时走向第二个区间2.该点大于等于【目标】序列被分为【begin,X】,(X,end】此时走向第一个区间人话:如果该点小了,那么该点和该点左边的元素都不需要了如果该店大了或相等,那么该点右边的元素都不需要了,但该点不能排除注意:取中间值的时候要往左取一点。

2024-08-27 20:49:14 987

原创 滑动窗口算法

1.滑动窗口使用前提:左指针向右走,右指针不用往回跑。2.滑动窗口常用来解决:找到符合要求的连续子串。2.1.滑动窗口可以找到序列中所有符合要求的连续子串。例如:找到总和为100的所有子序列2.2但题目往往这么问:例如:找到总和为100的最短子序列这个时候,我们往往会在遍历时比较(打擂台)。t=N7T8. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。

2024-08-17 11:55:50 1010 10

原创 双指针-【3,4,5,6,7,8】

- 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。1.每个节点的值是唯一的(因为会形成环),所以用节点的值充当指针。4.一定会形成环,这里就不证明了,因为题目条件给了。(就算不给,也是一定成环的)。

2024-07-30 23:53:59 779 1

原创 多态(C++)

1. 必须通过基类的指针或者引用调用虚函数2. 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写。

2024-07-22 23:31:32 823

原创 继承(C++)

1. 基类private成员在派生类中无论以什么方式继承都是不可见的。这里的不可见是指基类的私 有成员还是被继承到了派生类对象中,但是语法上限制派生类对象不管在类里面还是类外面 都不能去访问它。这里可以通过在派生类中调用基类的成员函数访问基类的私有成员,2. 基类private成员在派生类中是不能被访问,如果基类成员不想在类外直接被访问,但需要在 派生类中能访问,就定义为protected。可以看出保护成员限定符是因继承才出现的。3. 实际上面的表格我们进行一下总结会发现,基类的私有成员在子类都是不可见。

2024-07-22 18:35:34 1033

原创 优选算法:双指针(2)

- 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。给你一个长度固定的整数数组arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。注意:请不要在超过该数组长度的位置写入元素。请对输入的数组进行上述修改,不要从函数返回任何东西。调用函数后,输入的数组将被修改为:[1,0,0,2,3,0,0,4][1,2,3]调用函数后,输入的数组将被修改为:[1,2,3]

2024-07-16 17:02:40 416 1

原创 优选算法:双指针(1)

- 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。,必须在不复制数组的情况下原地对数组进行操作。nums =nums =[0][0]你能尽量减少完成的操作次数吗?

2024-07-16 16:28:09 355

原创 string类的使用手册

string();构造空的string类对象拷贝构造函数(深拷贝)在str的pos处开始,拷贝len个字符。如果len为npos(不传参)或str从pos到尾的字符个数小于len,则有多少拷多少用C-str来构造string类的对象拷贝s的前n个字符用n个字符连续的字符c来构造string类的对象用从first到last(last取不到)的字符串构造string对象。

2024-06-16 01:57:36 681

原创 lesson05:C++内存管理

class Datepublic:Date()int main()//不传参//匿名对象传单参//隐式类型转换传单参//匿名对象传多参//隐式类型转换传多参delete p1;delete p2;delete p3;delete p4;delete p5;return 0;

2024-04-26 12:52:08 397 2

原创 lesson04:类和对象(下)

解答:1.

2024-04-25 22:33:13 1134 2

原创 lesson03:类和对象(中)续

的成员变量需要。

2024-04-22 21:51:41 608 2

原创 lesson03:类和对象(中)

int _month;int _day;d1.Print();Date d2;d2.Print();return 0;构造函数是一个特殊的成员函数,是用来给对象的数据成员初始化的。(用处类似于上面的自定义成员函数Init,注意:这个Init不是构造函数!

2024-04-21 01:50:28 880

原创 lesson02 类与对象(上)

class是声明类的关键字,className是类的名字,花括号内为类的主体,注意花括号后面有一个分号。类体中的内容为类的成员:类中的变量称为或;类中的函数称为或。成员函数的两种定义方式:1声明和定义都在类内,需注意:这种方法定义的成员函数可能会被编译器当成处理。2.类内声明,类外定义3.类声明放在1头文件,成员函数定义在源文件。

2024-04-14 18:27:38 696 1

原创 第19讲:自定义类型:结构体

struct 结构体名称结构体成员...

2024-04-14 14:51:53 860

原创 lesson01:c++入门

定义命名空间,需使用namespace关键字,后面更着的是命名空间的名字(自定义的),然后接{},花括号里写命名空间的成员(如变量,函数,类,甚至可以嵌套命名空间)。现在用命名空间解决一下上面的问题:原理:一个命名空间就定义了一个作用域,叫做命名空间域,命名空间中的内容都局限与命名空间中,与命名空间外的内容互不影响。

2024-04-11 17:35:02 1030

原创 第28讲:oj算法题(1)

给你一个数组nums和一个值val,你需要移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下://是以“引用”方式传递的。也就是说,不对实参作任何拷贝// 在函数里修改输入数组对于调用者是可见的。

2024-02-08 22:57:41 1154 1

原创 第21讲:动态内存管理

堆区:动态开辟内存是在堆区上开辟的栈区:声明变量,调用函数是在栈区申请内存代码段:可执行代码,只读常量(例如字符串常量)数据段(静态区):全局变量,静态变量储存在静态区。

2024-02-07 12:41:31 745 1

原创 第27讲:单链表专题

1.单链表是什么?2.实现单链表。

2024-02-04 01:19:34 1067 1

原创 第26讲:顺序表的应用(通讯录)

我们可以通过对pa下标访问,访问到每一个结构体,然后用 . 进行结构体成员访问。本来,pa指向的是一个变量,现在让它指向结构体,使其储存的数据多样化。我们讲讲通讯录和上一节顺序表的区别以及本代码的构思。基本思路:略(第26讲有详解)文件1:SeqList.h。文件二:SeqList.c。文件三:contact.c。好,现在我们来做通讯录。首先,通讯录就是顺序表。

2024-01-31 22:46:16 385 1

原创 深入理解指针(5)

1.strlen函数2.数组和指针笔试题解析。

2024-01-31 19:32:16 921 1

原创 第六讲:函数扩展(static,extern)

static(静态的)修饰局部变量:让该变量存入静态区,拉长其生命周期,使其生命周期和全局变量一样,但作用域不变(不能在别的文件或函数内使用)。extern:在一个文件中想使用另一个文件的变量,只需在该文件用extern声明即可。static修饰全局变量:使其他文件不能使用该变量(用extern也不行)。1.1局部变量的作用域:变量所在的局部范围。局部变量的生命周期:进入作用域到出作用域。使用建议:希望某变量出函数后不会销毁使用。1.作用域:某变量可以使用的范围。作用:使变量出作用域后不会销毁。

2024-01-31 09:36:07 306 1

原创 第25讲:顺序表专题

数据结构是计算机存储、组织数据的方式。可以用来完成通讯录项目。

2024-01-30 16:46:24 1196 1

原创 第4讲:分支与循环(下)

1.生成一个1~100的随机数2.玩家猜数字,反馈猜的情况,输出猜的数字比随机数大还是比随机数小,直到猜出随机数为止。

2024-01-27 15:42:04 369

原创 第13讲:深入理解指针(4)续

这时候,聪明的程序员想到了一个办法,将首元素的大小(大小为sz)上传上去,再将p1(首元素地址)强制类型转换为char*类型,地址加一将跳过一个字节,如果想要跳过N个元素,就让首地址加上N*sz,这样就能顺藤摸瓜找到每个元素。参数:qsort能排列任意类型的数据,所以传数据首地址时,qsort函数应该用void*类型的形参接受,后面几个参数的目的体现在函数的实现上。一样的问题,我们有了需交换的变量的地址,还时希望能直接强转成该变量的类型,但是,类型不能作为参数上传。在循环中,第一次转换两变量的第一个字节。

2024-01-25 00:41:04 859

原创 第13讲:深入理解指针(4)

1.回调函数2.strcmp函数3.qsort函数。

2024-01-24 13:19:10 970 1

原创 第二讲:C语言数据类型和变量

类型是用来形容变量的,变量就像一个容器,里面可以装数据(一个变量),数据分为各种各样的类型,有字符型(char,是用来描述字符的),整型(int,是用来描述整数的),浮点型(float,double,是用来描述小数的),要装什么样的数据,就要什么样的变量,在变量前加上类型进行修饰,就可以得到该类型的变量。看如下代码c语言遇到格式说明符,会以该格式说明符所表示的形式打印对应逗号后面的数据,第N个格式说明符对应第N个逗号后面的数据。

2024-01-21 19:22:55 918

原创 第一讲:C语言常见概念

像int if return这类词叫关键字关键字都有特殊的意义,是保留给C语言使用的程序员在创建标识符的时候,不能与关键字重复不能自己创建关键字。

2024-01-21 01:56:12 1007 3

原创 第13讲:深入理解指针(3)

科普:printf格式化打印1.深入理解字符串2.字符指针变量3.数组指针变量4.函数指针变量5.函数指针数组6.函数指针数组的应用。

2024-01-20 21:04:15 1137

原创 第12讲:深入理解指针(2)

1.数组名的理解2.使用指针访问数组3.一维数组传参的本质4.冒泡排序5.二级指针7.指针数组8.指针数组模拟实现二维数组。

2024-01-20 02:20:26 1141

原创 第11讲:深入理解指针(1)

指针变量就是一种变量,这个变量是专门用来储存指针的。复习:什么是变量?变量是可以变化的量,可以将其理解为一个容器,用来储存各种各样的数据。2.2取地址操作符(&)&是单目操作符,用于取出变量的地址。%p是格式化打印地址我们看第五行,我们创建了一个变量“a”,当我们创建这个变量时(即使不赋值),都会向内存申请一块连续的空间,那我们就可以打印a的地址。取出a的地址,再用%p格式化打印到屏幕,可以看到00CFFBD0(16进制),而这个16进制数就是变量a的地址。

2024-01-19 20:37:12 1025

原创 第三讲:分支与循环(上)续

2.do-while语句中遇到continue,会跳过剩余语句,但不会跳过最后的判断表达式。语句1(只执行一次)->判断表达式成立->语句->语句2->判断表达式成立->语句->语句2........4.在for循环中,若判断表达式不成立,最后不会执行for后面括号内第三个语句。注意语句1可以写在循环前面(因为值执行一次),语句2可以写在语句的最后。判断表达式成立->执行语句->判断表达式成立->执行语句......语句->判断表达式成立->语句->判断表达式成立.......一直循环到判断表达式不成立。

2024-01-17 21:45:06 393

原创 第三讲:分支和循环(上)

你们是不是这么想的,恭喜你,又错了,a是0,a++后a变为一,但a++表示a+1以前的值,也就是0,所以a++是假,后面不用看,就知道a++ && ++b && d++为假,所以后面就不算了呀。所以1<3<2的结果是1,所以(1 < 2 < 3)?因为t>5为假,所以右边不用判断,都能知道t>5&&t<8为假,故计算机就不判断了,直接出结果,相这样的求值叫。没错,答案是1,因为1<3正确,返回1,1再代替%d,从而可以将1打印在屏幕上!这里的顺序是刻意打乱的,(当然,这是正确的),是为了让你们深刻理解。

2024-01-17 19:32:16 938

原创 第9讲:函数递归

同时递归在重复调用函数时,之前调用的函数都没有返回,函数对应的栈帧内存一直被占用,这块空间叫运行时堆栈,也叫函数栈帧,直到函数开始返回时,内存才会慢慢的回收,如果递归的次数过多,就会造成栈溢出。4.2说了递归这么多坏话,但他终究是存在的,存在即合理,它有属于他的用武之地,但不要随意使用,从而养成“递归坏习惯”,也就是做题目总想着递归。中,i单调递增,n-i越来越接近1,当n-i=1时,(n-i)!顺序打印12345==先打印1,再顺序打印2345。顺序打印45==先打印1,再顺序打印5。

2024-01-17 16:44:22 455

原创 第五讲:数组

8.二维数组中一维数组中的元素中的存储也是连续的,即使它们不在同一行,假设有定义:int arr[2][2]={1,2,3,4};2.2初始化:type arr_name[正整数]={元素1,元素2,元素3......};arr[1][0]的地址与arr[0][1]的地址也相差4。也就是说,第一个元素的下标是0,第二个是1,以此类推。访问第一个一维数组的第一个元素:arr[0][0];访问第2个一维数组的第3个元素:arr[1][2];访问第3个一维数组的第2个元素:arr[2][1];

2024-01-17 15:16:22 930

原创 第六讲:函数

2.1:定义:c语言标准中提供了语法规则,但不提供库函数,他是由编译器厂家生产出来的,库函数也是函数,也是完成一个个各不相同的功能的。由于该代码比较简单,很难看出函数的优点,但是,你可以发挥想象力,如果是一个几百行代码的大工程,这里用函数分工行动,是不是会简化代码,帮助程序员梳理思绪?其次,如果一个功能在程序中多次使用,这个函数也是可以复用的(在程序中的其他地方,如果想要再次使用该函数的功能,可以直接用该函数,不用再写一遍),提升了开发软件的效率。2.一般将函数的声明放在头文件中,函数的实现放在源文件中。

2024-01-17 00:30:28 1033 1

空空如也

空空如也

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

TA关注的人

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