自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c++——模板初始识

也可以同时指定T1,T2(返回值类型可以由T1决定(T1通过参数推演)。T1不是只做返回值,也就不是(3)的那种情况)然而这三个函数的逻辑是一样的,写这么多有些多此一举,通过函数模版可以写一个通用的交换函数。T1-Tn是函数的参数类型名(T可以用别的名字代替,只是我们习惯用T)必须加上模板参数列表(template)typename是关键字,也可以用class代替。(这种情况下,b会转换为int类型)A就相当于st1的类型。类模板与函数模板不同的点在于,类型也要写成A

2024-05-28 11:57:02 553

原创 c++动态内存管理干货

事实上,new严格来说是为了解决自定义类型空间的申请像C语言一样用malloc为多个自定义类型申请空间,但是这样会导致一个大问题:我们都知道,类只在创建对象时调用构造函数从而初始化,但是malloc申请时各个对象并不会调用函数处理数据,只是开辟空间而已,导致这10个对象都没有初始化。

2024-05-28 09:33:22 359

原创 类中的static成员的注意点

3)静态成员变量一定要在类外初始化(定义时),因为静态成员不在对象空间中存储,不走初始化列表。5)正是因为静态成员函数不访问非静态成员,也不在对象中存储,而且静态成员不在对象中存储,所以。静态成员也是类的成员,受public、protected、private 访问限定符的限制。type 类名::变量名 = 初始值。静态成员函数没有隐藏的this指针。当然也可用 对象.静态成员。不能访问任何非静态成员。

2024-05-11 18:19:14 225 1

原创 再谈构造函数——exlicit

实际上,st2属于类型转换,把2这个内置类型先转换成Queue这个自定义类型然后存在临时变量里,然后将这个临时变量拷贝给st2。对于第二种,先把1转换为A类型,然后存在临时变量里,date就是这个临时变量的引用。st1不必多说,原理就是传参,但是st2呢?第一种,先创建A类型变量,然后传入push;在一些情况下,如果不想构造函数发生类型转换,如A(int n,int m)就是双参数。假设要在栈里面存名为A的类。传参时加上花括号即可。

2024-05-09 21:27:01 241

原创 关于初始化列表

你可以认为构造函数名与构造函数体(花括号)之间的位置就是定义成员的地方(花括号内只是赋值,因为初始化只能有一次),把1,2传入就成功初始化了。不仅仅是自定义类型这样初始化,内置类型也可以:如果参数大于一个,就用 { },例如:push{1,2} ,pop{1,2}。定义对象时要传多个参数也可用{ }。下面是初始化列表的注意事项:1.每个成员变量在初始化列表中只能出现一次初始化只能初始化一次2. 类中的以下成员,必须放在初始化列表位置进行初始化:引用成员变量(因为定义时必须给初始值)

2024-05-09 19:45:28 987

原创 二(三)叉树 拥有不同度的节点 之间的关系(易懂)

度的总数等于A,B,C,D,E,F的度之和,由图可知,A的节点下有两根棍子,说明度为2;B下面同样是两根棍子,度也为2;C下面一根棍子,说明度为1.D,E,F都没有棍子,说明度为0;每个棍子尾部都链接一个节点。除了A这个根节点,(自下而上看)每个节点都对应一根棍子。度为x的节点的数目:Nx(比如N1是度为1的节点的总数)度的总数:k(节点的度就是该节点的子树个数)这样看来棍子数就是度的总数 k。得出来:N0=N2+1;所以有了k+1=N;

2024-05-07 21:13:52 181

原创 c++--auto

auto并非是一种“类型”的声明,而是一个类型声明时的“占位符”,编译器在编器期会将auto替换为变量实际的类型(通过分析数据)。使用auto定义变量时必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导auto的实际类型。比如:int a = 1;可以替换为 auto a = 2;这时候auto被替换为int。

2024-05-07 17:39:52 281

原创 c++--引用干货

引用的底层就是指针实现的,所以概念里提到的“编译器不会为引用变量开辟内存空 间”是指在语法上(抽象层面)没有开辟空间,实际上它只是没有开辟空间存储引用实体但肯定要为指向引用实体的指针开辟空间,通过这个指针可以修改引用实体。所以y接收到的是具有常性的临时变量的值,如果不加const,相当于在y手里临时变量可更改了,权限被放大.2.在sizeof中,引用变量名得出的是引用实体的大小,而指针得出的是地址的大小(一半为4字节)注意,此时y指向的是临时变量的地址而不是x的!这是正确的,缩小了b对a权限,只读不改。

2024-05-07 17:14:07 486

原创 c++——类和对象(中)

里面编译器生成的默认构造函数去处理这个自定义类型数据。这里有两种情况,一种是我们自己在这个这个自定义类型里定义了不同于编译器生成的构造函数(在这种情况下编译不会生成默认构造函数),而找不到默认构造函数就会。

2024-05-07 17:11:53 1133

原创 c++--类和对象(上)

分离之后会报错。类其实是定义了一个新的作用域(类似于命名空间)。先从局部域搜索capacity,top,arr这些变量,再从全局域搜索,都没搜到他们的定义,所以我们需要告诉编译器,这些变量是Stack中的,和Init一起的。可以在Init前加上:Stack::来表示Init是Stack里的。这样就可以了。

2024-04-30 17:23:20 1138

原创 c++--内联函数

然而,如果调用内联函数次数多且内联函数的代码量不是很小,会大幅增加可执行程序大小,这样就得不偿失了。注意,要在函数定义处添加 inline 关键字,在函数声明处添加 inline 关键字虽然没有错,但这种做法是无效的,编译器会忽略函数声明处的 inline 关键字。一般调用函数时,会跳转到函数本体来执行程序,然后回到主函数,但是调用内联函数时,会将函数整个贴到主函数里,作为语句执行。编译器把函数变为内联函数,如果编译器认为这样不好(比如代码量大),是不会执行的。在函数定义时用line修饰函数(

2024-04-29 15:30:21 115

原创 c++--函数重载

他们具有重载性能,但他们不是重载关系,因为x1和x2的作用域并不同(只是把它当成全局函数,但作用域仍然是命名空间)。虽然构成函数重载,编译器也不会报错。但是这种重载在调用时可能存在调用歧义,比如调用的时候不传参数。1.同名函数的参数类型或者个数或者参数类型的顺序不同。函数重载就是程序中存在同名函数(需要满足一定条件),这被c++语法支持。虽然一个是缺省参数,一个是正常参数,但参数类型都是int。在调用合法同名函数时,会根据参数来决定调用哪个函数。2.重载的函数必须在同一作用域。以上都是函数重载的例子。

2024-04-28 12:50:00 210 1

原创 缺省参数的干货

在使用该函数时,如果传入了缺省参数对应的实参,那么就让缺省形参的值与对应实参相同,如果没有传入缺省参数对应的实参(体现在函数调用上就是传入的参数少于形参),那么让缺省形参的值就是初始值。.在函数的定义(声明)中,缺省参数必须是从右到左定义,不能跳着定义,否则传入实参后,不知道付给非缺省参数还是缺省参数。1.如果一个函数只有缺省形参,他的参数总的叫全缺省参数。如果是两种参数混合的话就叫半缺省参数。3.函数声明与定义不能同时给缺省参数赋值,最好在声明中赋值.简单来讲,缺省参数就是函数声明或定义时就。

2024-04-27 19:40:32 101

原创 c++——命名空间干货

3.使用using namespace xx将命名空间xx引入类似于第二种方法,第三种方法会将命名空间中的变量全部解放出来,但这样会失去命名空间的意义所以一般不用。

2024-04-27 13:59:39 387

原创 ——排序算法

3.时间复杂度:O(N^logN)

2024-04-25 14:29:00 292 1

原创 文件操作干货

注意:如果不使用绝对路径(完整的建立路径,如:c:\yyy\xxx\xx.txt)而是直接用文件名(xx.txt),每次建立新文件夹的时候都会在默认路径,如果想要在默认路径前一个目录(如:xxx)中建立,只需要把("test.txt","w+")改为("./../test.txt","w+"),前两个就是("./../../test.txt","w+").从键盘,网络,c盘等储存设备中读取数据的读取方式方式各不相同,同样的,输出数据的方式也有许多(比如输出到屏幕,写在文件中);

2024-03-20 18:20:25 1458 1

原创 动态内存管理的干货

类似于c99中的变长数组,你可以让size为变量,在运行过程中开创想要大小的空间,但是变长数组一但开创就不可改变,而动态空间可以通过realloc改变.free函数是值传参,释放空间后,实参的指向仍为原动态空间,这就相当于实参成了野指针,为了避免这种情况,在free语句后要让实参指向NULL。2.如果扩大空间后与别人的空间重合,那么它会寻找一个新的能容下扩大后的空间的位置,并把旧位置的数据拷贝过去,此时返回的是新空间的地址.:在堆区上申请一块大小为size字节的连续空间,返回指向这块空间的地址.

2024-03-14 14:40:38 769 1

原创 最容易理解的KMP算法推演(包括next数组的理论推导)

,如果连arr1[start]~arr1[i-1]都匹配不上也就没必要继续了(自己举个反例子体会一下).而arr1[start]~arr1[i-1]匹配的一部分模式串为arr2[0]~arr2[i-start],即arr1[start]~arr1[i-1]==arr2[0]~arr2[i-start]又因为arr1[0]~arr1[i-1]==arr2[0]~arr[ j-1],所以必有arr1[start]~arr1[i-1]==arr2[start]~arr2[ j-1]

2024-03-12 11:27:04 1949 8

原创 通俗讲解生成随机数的方法与原理!!!

https://img-blog.csdnimg.cn/direct/491c1df79feb4210b29d10790c379bbf.png

2023-12-03 21:02:01 196

原创 限定宽度,限定小数位数

除对齐方式其他同上。最小宽度值和小数位数这两个值都可以用*代替,通过printf()的传参传入。限定小数位数可以与限定宽度结合:printf("%[x].[y]f");有x位,不够x位在左侧补空格,但如果这个数字大于x位,就不用补空格了,printf(“%.[x]f”);保留x位小数(注意%号后有小数点)。最后一个小知识:4.0e3相当于4.0×10^3;

2023-11-27 11:46:50 169

原创 无小道的第一篇博客

学习目标如何学习。

2023-11-20 16:48:16 33 1

空空如也

空空如也

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

TA关注的人

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