自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode209_长度最小的子数组

(3)right不动,left移动,缩小窗口,直至不符合要求;(2)left不动,right移动,扩大窗口,直至符合要求;(4)重复(2)和(3),直至right到达末尾。(1)初始化left = right = 0;要求某个连续的区间内的元素值总和>=S .思路:滑动窗口:本质上是一种双指针法。

2024-05-24 19:17:52 112

原创 leetcode977_有序数组平方后仍有序

由于元素是非递减顺序,因此平方后最大的数字要么在最左边,要么在最右边,因此不用关心靠里的元素值。前提:数组是非递减顺序。

2024-05-23 21:41:37 94

原创 leetcode27_移除元素

方法:双指针:慢指针获取新元素要插入的位置,快指针获得新元素的值。思想:遇到不要的元素,应当用后续元素覆盖即可。

2024-05-22 14:49:02 73

原创 Leetcode704_二分查找

1, 1)是不合法的,不应当出现这样的区间,因此while循环判断语句应改为left < right。[1, 1]是合法的,因此while循环判断语句为left <= right;题目前提是数组有序,默认递增。

2024-05-21 19:29:39 360

原创 C++初探_右值引用

分析:x+y是一种右值,因此可以将r1关联x+y的结果。那么,将右值关联到右值引用导致该右值被存储到特定的位置,且可以获取该位置的地址(也就是说,可以用&访问r1)。包括:字面常量、诸如x+y等的表达式,以及返回值的函数。此时,再对y进行改动,r1的值是不会受到影响的。左值:在内存中有确定的存储地址。

2024-05-18 20:58:26 160

原创 C++初探_函数对象

分析:STL提供的函数对象(函数符)其本质是:重载了()运算符的类。因此,可以像使用函数调用那样,使用类对象。

2024-05-17 15:21:35 97

原创 C++初探_关联容器

容器都是经过排序的。因此,其实如果要向关联容器中插入对象,只用指定内容,不需指定插入位置。关联容器将键和值关联在一起,并使用键来查找值。键类型与值类型相同,一个键可能对应多个值;键类型与值类型相同,一个键可能对应多个值。键类型与值类型相同,键值对一一对应;键类型与值类型不同,键值对一一对应;

2024-05-16 14:56:48 64

原创 C++初探_STL特征的复杂度

对于vector容器,要实现把一个新值放到所有元素最前面,那么就需要所有元素向后移动一位,从而腾出空间。这种操作的复杂度是“线性时间”,十分糟糕。而对于list和deque,属于“固定时间”。因此,“固定时间”复杂度的操作才会被实现。若复杂度为固定时间:操作发生在运行时,但是独立于对象中的元素数目(不受元素个数影响);若复杂度为编译时间:操作将在编译时执行,执行时间为0;若复杂度为线性时间:此时,时间与元素数目成正比。

2024-05-15 19:44:42 200

原创 C++初探_char类型与string类型的输入

2>. 读取字符串的函数是istream类的方法,因此,cin.getline()中,cin是作为调用对象;而对于string版本的getline()函数是一个独立的函数,因此cin作为函数的参数。1>. string版本的getline()函数将自动确定目标string对象的大小,因此不需要指定长度10。①共同点:都有一个可选参数,可以指定使用哪个字符串在确定输入边界,默认边界是'\n'。首先,有两个版本的getline()函数。

2024-05-14 16:23:18 152

原创 C++初探_异常机制

这个try快中使用了函数调用,当调用时确实出现了异常,会利用throw语句引发异常。throw语句实际上是跳转,终止函数的执行,将控制权返回,然后寻找与引发异常类型匹配的异常处理程序。使用catch捕获异常。catch参数为指向char的指针,因此throw传递的字符串传给char*,类型匹配。然后程序跳到catch块中执行程序。try块中的代码表示:需要注意这里面的代码,可能会出现问题,引发异常。对程序运行中发生的异常情况进行响应并处理。(3)异常处理程序catch。(2)引发异常throw。

2024-05-12 10:24:34 177

原创 C++初探_友元类

但同时,这个Remote类成员函数又使用了Tv引用作为对象,编译器同样应知道Tv是什么,那么Tv又要定义在Remote前面。存在的问题:编译器必须提前知道Tv类中onoff()的声明。但是刚才只对Tv类做了前向声明,Tv类的定义在Remote类之后。解决办法:在Remote类中,只对成员函数做声明,不做定义实现。分析:只能前向声明Tv,不能前向声明Remote。分析:这行代码想把class Remote中的set_chan函数作为class Tv的友元。分析:这个函数会使用Tv类的onoff()成员函数。

2024-05-11 15:18:04 158

原创 C++初探_类模板

存在的意义:有时候,可能需要为特殊类型实例化时,对模板方法进行一些修改,做出不同的行为。分析:非类型参数/表达式参数有一些限制:只能是整型、枚举、指针或引用。目前为止使用的都是隐式实例化,即:在声明对象的时候给出具体的类型。使用关键字template,并指出具体类型来声明一个类。具体化:分为隐式实例化、显式实例化和显式具体化。2.非类型参数/表达式参数。3.模板类使用多个类型参数。4. 类模板的具体化。

2024-05-10 15:23:26 190

原创 C++初探_虚基类的声明

存在的原因:希望在多重继承时(即:派生类有多个直接基类,而这些直接基类是从同一个祖先基类派生而来),派生类只继承一个共同的祖先基类对象。分析:禁止信息通过中间类自动传递给虚基类。因此,在派生类中,必须通过显式地调用虚基类构造函数进行初始化。

2024-05-09 20:18:18 144

原创 C++初探_类成员初始化顺序

【代码】C++初探_类成员初始化顺序。

2024-05-08 09:31:15 215

原创 C++初探_继承与动态内容分配

(2)复制构造函数:应在成员初始化列表调用基类的复制构造函数来处理基类的成员。这是合理的,因为基类的引用可以指向派生类的对象,反过来则不允许(单向性)。并且,派生类的析构函数、复制构造函数、赋值运算符重载函数都将使用相应的基类的析构函数、复制构造函数、赋值运算符重载函数来处理基类的元素。若派生类使用了动态内存分配,那么就必须为派生类定义显示的:析构函数、复制构造函数、赋值运算符重载函数。(3)赋值运算符重载函数:应显示地使用作用域运算符调用基类的赋值运算符重载函数。

2024-05-07 15:22:31 165

原创 C++初探_创建派生类构造函数

(5)创建派生类对象时,程序首先创建基类对象。(6)对象过期时,释放对象的顺序与创建对象的顺序相反:首先执行派生类的析构函数,然后调用基类析构函数。(4)必须使用基类的公有方法来访问私有的基类成员,也就是说,派生类构造函数必须使用基类构造函数。(2)基类的私有部分也将成为派生类的一部分,但是只能通过基类的公有和保护方法访问。(1)通过继承,派生类对象存储了基类的数据成员,并且可以使用基类的方法。(3)派生类的构造函数必须为新增成员和继承的成员提供数据。

2024-05-06 15:39:57 186

原创 C++初探_类中常用的函数声明

【代码】C++初探_类中常用的函数声明。

2024-05-05 16:41:11 76

原创 C++初探_转换函数

(1)转换函数:①必须是类方法,受Stone::限定;②不能指定返回类型;④必须返回转换后的值。(2)将基本类型值赋值给对象:会将接受唯一一个参数的构造函数作为转换函数,完成工作;转换函数存在的原因:反转赋值顺序:将类对象赋值给一个基本类型值。将对象赋值给基本类型值:需要自定义转换函数。

2024-05-04 16:25:18 196

原创 C++初探_类构造函数的自动类型转换

分析:可以利用explicit关闭隐式自动转换,此时,只允许显示强制类型转换。

2024-05-03 16:21:18 158

原创 C++初探_运算符重载的简单使用

【代码】C++初探_运算符重载的简单使用。

2024-05-01 20:19:03 50

原创 C++初探_间接成员运算符(->)在类中的使用

因此,top指向的对象调用了函数Stock::topval,接着,函数Stock::topval返回对象的引用,再用&符号取地址,更新top指向的位置。理解:(1)top->用于访问top指向的对象的成员或成员函数。(2) &用来取地址。

2024-04-29 17:13:13 153

原创 C++初探_char*返回类型函数

分析:f()返回值类型为指向char的指针。在main()中令char* p = f();实际上是两个指针同时指向了相同的内存空间,而不是指针对指针赋值。

2024-04-28 17:21:30 110

原创 C++初探_自定义名称空间

【代码】C++初探_自定义名称空间。

2024-04-28 11:18:03 353

原创 C++初探_定位new运算符

分析:new运算符的变体:定位new运算符,它允许代码指定要使用的位置。

2024-04-27 10:44:22 89

原创 C++初探_静态存储变量

(3)无链接性:只能在当前代码块中访问,在代码块中声明并使用static。(2)内部链接性:只能在当前文件中访问,在代码外声明并使用static;(1)外部链接性:可在其他文件中访问,在代码外部声明即可;

2024-04-26 19:17:52 187 1

原创 C++初探_自动类型转换

理解:(1)当运算涉及到两种类型时,较小的类型将被转换为较大的类型;(2)较小的类型值赋值给取值范围更大的类型时,通常不会导致什么问题。分析:a+b应该输出较大类型,即int类型。

2024-04-25 19:06:15 191 1

原创 C++初探_函数默认参数

调用函数传递实际参数应:从左向右赋值。并且,不允许跳跃赋值。分析:函数默认参数应:从右向左赋默认参数值。

2024-04-25 11:16:50 92 1

原创 C++初探_const限制指针与函数指针

【代码】C++初探_const限制指针与函数指针。

2024-04-24 14:48:12 206

原创 C++初探_二维数组默认可省略行数

【代码】C++初探_二维数组默认可省略行数。

2024-04-23 21:21:39 113

原创 C++初探_数组名解释为其第一个元素的地址

【代码】C++初探_数组名解释为其第一个元素的地址。

2024-04-23 21:12:01 104

原创 C++初探_sizeof()返回数组元素所占总字节数

【代码】C++_sizeof()返回数组元素所占总字节数。

2024-04-21 21:29:41 186 1

原创 C++初探_输出字符串ch

分析:++ch输出当前字母的下一个字母,ch+1输出的是字母对应的ASCII码值。

2024-04-20 20:07:58 192

原创 C++初探_利用数组取整数在不同地址的值

【代码】C++初探_利用数组取整数在不同地址的值。

2024-04-20 17:13:51 106

原创 C++初探_利用循环读取cin输入字符

分析:只需输入一次,while内部cin的作用是:读取下一个字符,而不是要求用户输入。

2024-04-20 16:00:34 123

原创 C++初探_strcmp()的使用

分析:strcmp()函数接受两个参数为地址,然后比较ASCII码值,第一个参数大于第二个参数返回1,小于返回-1,等于返回0.。

2024-04-20 09:45:19 212

原创 C++初探_递增与指针

分析:经过一系列自增之后,p指向了元素33。11, 11的地址,33的地址。但是,结果却是33。

2024-04-19 20:35:33 131 1

原创 C++初探_new动态创建字符数组并输出地址

分析:直接输出a是直接输出了整个字符串。在这里使用(int *)强制转换为地址。

2024-04-19 15:28:22 214 1

原创 C++初探_cout字符数组

理解:数组名f保存的是第一个元素的地址,即:r的地址。传递给cout后,cout从该地址打印字符,直至'\0'。

2024-04-18 21:23:32 132

原创 C++初探_枚举

枚举变量:枚举变量只能赋值枚举里声明的值。或者,对枚举以外的值进行强制类型转换,则赋值合法。

2024-04-18 16:01:53 65

原创 C++初探_cin.get()的使用

熟悉:cin.get()调用,可以读取下一个字符,即使是换行符。为下一行输入做准备。因此,表现效果为输入完成后,停顿一下,已确认信息无误再按回车再继续程序。

2024-04-18 09:18:03 101

空空如也

空空如也

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

TA关注的人

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