- 博客(40)
- 收藏
- 关注
原创 c++模板
模板的本质就是将数据类型参数化,使用模板的前提就是若干段逻辑相同、但数据类型不同的代码,为了降低代码的冗余度,可以将相同。在使用自动类型推导时,必须推导出已知的数据与类型T才可以使用。(也就是说传参时,对于T,要传入相同的类型)在c++中除了面向对象的思想外,还有一种编程思想叫做泛型编程,主要利用的技术就是模板。建立一个通用函数,其函数返回值类型和形参类型可以不具体确定,用一个虚拟的类型来代表。模板的通用并不是万能的。有两种模板,一个是函数模板,另一个是类模板。模板必须要要确定除T的数据类型,才可以使用。
2023-08-13 19:40:18
311
原创 数据预处理
在二维插值中interp2函数,适用于单调数据的插值,比如x和y都是增大或者是缩小的,当x和y不是递增或者递减的话,就需要用到griddata这个函数,这个函数适用于任何的情况。数据清洗:数据中可能存在一些错误数据、异常数据,我们将其查找出来之后,进行相关的处理,使其成为正常的、可使用的数据。极值差法是无量纲化的第二种方法,在无量纲化之前要做的是数据的一致化处理(指标的正向化处理)。所以说,在处理数据的过程中,我们需要先确定每个指标的类型,是效益型还是成本型还是区间型,再使用相应的公式去处理。
2023-08-07 08:43:35
257
原创 C++指针
上述代码块的含义就是在内存中申请一块长度为4字节的内存空间,假设这块空间的内存编号为0x0001,即就是这块内存空间中存放的变量类型为int,其数值为9,变量名叫做loop。上述代码块表述的是常量指针,指针的指向可以发生变化,但是指针指向的值不能发生变化。在了解变量的含义之后,接下来介绍一下什么叫做指针,指针的本质就是一个变量,只不过与常规其他变量不同的是,其保存的是变量的地址。要注意的是,若一个指针是空指针,那么这个指针指向的内存是不可以访问的。指针变量指向非法的内存空间,这样的指针叫做野指针。
2023-08-06 11:29:31
243
原创 c++文件操作
2、二进制文件:文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂。1、文本文件:文件以文本的ASCII码存储在计算机中。读文件可以利用ofstream,或者发stream类。读文件可以利用ifstream,或者fstream类。c++中对文件操作需要包含头文件<fstream>打开文件时候需要指定操作文件的路径,以及打开方式。利用is_open函数可以判断文件是否打开成功。文件操作必须包含头文件 fstream。1、ofstream 读文件。利用<<可以向文件中写数据。操作完毕,要关闭文件。
2023-08-06 10:53:18
187
原创 c++多态
由上述代码可知,通过父类对象作为形参,传入子类对象为实参时,如果想让子类执行同名函数,那么这个函数地址就不能提前绑定,需要在运行阶段进行绑定,也就是地址晚绑定。多态中,通常父类中的虚函数的实现毫无意义,主要都是调用子类重写,可以把这类函数改成纯虚函数。多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用子类的析构代码。所以我们可以将父类中的函数改为虚析构或者纯虚析构。子类必须重写抽象类中的纯虚函数,否则也属于抽象类。如果是纯虚析构,该类属于抽象类,无法实例化对象。2、子类重写父类的虚函数。
2023-08-06 10:05:05
48
原创 c++继承
当子类与父类拥有同名的成员函数,子类会隐藏父类同名成员函数,加作用域可以访问到父类中同名函数。当子类与父类出现同名的成员,如何通过子类对象访问到子类或者父类中同名的数据。class 子类 :继承方式 父类1,继承方式 父类2...多继承可能会引发父类中有同名成员出现,需要加作用域区分。继承的语法:class 子类 : 继承方式 父类。继承中同名的静态成员在子类对象如何进行访问呢。子类对象加作用域可以访问吧到父类同名成员。访问子类同名成员,直接访问即可。访问子类同名成员,直接访问即可。
2023-08-05 22:19:50
70
原创 c++友元
在程序中,有些私有属性也想让类外特殊的一些函数或者类进行访问,这时就需要用到友元的技术。友元的目的就是让一个函数或者类访问到另一个类中私有成员。友元的关键字叫做friend。
2023-08-05 12:35:30
65
原创 对象模型和this指针
在类中的每一个成员函数体中,都有一个隐藏的this指针,this指针的本质是指针常量,指针的指向是不可以修改的。相当于是person * const this,当我们加上const指针进行修饰之后:const person * const this,代表着指针的指向不能发生变化,指针指向变量的值也不能发生改变。空对象占用内存空间为一个字节,c++编译器会为每一个空对象分配一个字节的空间,是为了区分空对象占内存的位置。在非空的对象中,非静态成员变量,是属于类的对象上。综上,成员变量和成员函数是分开存储的。
2023-08-05 10:36:10
53
原创 构造函数和析构函数
c++中有一种特殊的构造函数叫做拷贝构造函数,拷贝构造的构造函数的形参就是本类的一个实体对象。有一个易错点就是,当我们以下列方式去进行表述的时候,编译器会认为是一个函数的声明。当使用拷贝构造函数,若被拷贝对象中有在堆区中开辟的变量,这时就需要用到深拷贝。在创建对象的时候编译器会自动调用构造函数,并且只会调用一次。构造函数可以有参数,所以多个构造函数之间可以发生重载。程序在对象销毁前会自动调用析构函数,并且只会调用一次。语法:类名(const 类名 &对象名){}析构函数语法:~类名(){}
2023-08-04 17:34:41
60
原创 C++函数
要注意的是,若子函数的形参列表中对形参的默认值做出了规定,而且在主函数中调用此子函数时也传入的参数的值,那么优先使用主函数中传入的值。函数的形参列表中可以有占位参数,其作用是用来占位的,但调用函数的时候必须补上该位置的参数。构成函数重载的多个子函数之间只有参数列表不同(包括参数的个数、顺序、类型).在函数重载中,有一个易错的点。并且为了避免二义性,子函数的声明和实现中,只能有一个有默认参数。在C++中,函数形参列表中的形参是可以有默认值的。基本语法:返回类型 函数名(参数 = 默认值){}
2023-07-26 00:46:31
57
原创 C++引用
当返回其引用类型时,原先变量a所在的内存空间的操控权已不由主函数所控制,原先的内存空间可能会被系统用来存放其他的内容,所以在主函数中输出局部变量a时,就会出现乱码(第一次输出时,输出值保持原先变量a的值,原因是编译器会对a的值进行一次保存,第二次再输出时就会出现乱码。引用的本质在c++内部实现是一个指针常量(指针的指向不可以修改,指针的值可以进行修改),正是因为指针常量的指向不可以发生改变,所以引用在初始化之后,也不能够进行改变。使用常量来修饰引用的作用是为了修饰形参,防止误操作。
2023-07-25 02:22:00
63
原创 逻辑函数形式的变换
逻辑函数化简的最终形式要和现有的元器件进行对应。也就是说,逻辑函数式什么样的形式取决于我们手头有什么样的元器件,将逻辑函数用相应的元器件进行表示,这样才能更好的构建电路。将与或转化为与或非时,我们注意到这两者是属于互补关系的,所以我们利用卡诺图求出其互补部分的逻辑函数表达式。了解完这几种常用的逻辑函数的形式之后呢,我们需要将其几种形式之间进行转化。也就是说除了将简单与或表达式转化成与非-与非形式之外,其余都要借助卡诺图进行转化。将与或表达式转化成或与表达式的过程中也需要借助卡诺图进行转化。
2023-04-16 15:06:52
2333
原创 卡诺图化简法
要注意的是画圈的时候可以重复,因为A+A=A,所以可以逻辑函数的标准形式中加任意其中一个最小项,其结果不会受到影响。但是要注意的是,在化简的时候,相邻两项不一定是唯一的,因为逻辑函数的最简形式不是唯一的。将逻辑式用卡诺图进行表示之后,就可以进行相邻相消了。
2023-04-12 23:36:17
723
原创 逻辑函数的公式化简法
利用公式法化简逻辑函数对我们公式的掌握情况要求比较高,在有些情况下比较难观察。有两种化简逻辑函数的方式,一种是利用公式进行化简,一种是利用卡诺图进行化简。
2023-04-12 11:28:12
314
原创 逻辑代数基本公式
在这一章节里面,为了能够更好的记忆和理解逻辑代数的基本公式,我们可以使用集合的运算来进行类比。除了上述常用的公式以外,我们还需要再学习一些基本的常用公式。上述两个公式可以看做是集合与其子集之间的合并公式。
2023-04-03 16:40:20
135
原创 逻辑代数的基本运算
异或就是参与运算的两个逻辑变量取值相同的时候,输出结果为0,两逻辑变量取值相异的时候,输出结果为1。这三种基本的逻辑运算在电路中可以用三种基本的电路(串联、并联和短路)来表示,其运算结果可以用灯泡的亮灭来表示。上图是与非和或非的逻辑表达式和图形符号。在了解三种的基本逻辑运算之后,由这三种基本的逻辑运算可以组成符合逻辑运算。可以利用逻辑代数与集合之间的关系来更好的理解逻辑代数中的基本公式。在逻辑运算中,有三种基本的运算,与或非。上图是与或非的逻辑表达式和图形符号。
2023-04-03 15:10:10
821
原创 逻辑代数基本定理
代入定理也就是整体替换,能够进行整体替换的原因是每一个逻辑变元的运算结果非1即0,无论是单个逻辑变元还若干个逻辑变元经过运算之后,都是这个结果,所欲可以使用一个逻辑式来代替一个逻辑变元。以上是带入定理的两个例子。通过代入定理可以将之前学过的两变量公式进而拓展为多变量公式。一个逻辑式可以通过反演定理得到它的反逻辑式。
2023-04-02 14:35:55
153
原创 初步认识数据库
是数据库管理人员对数据库进行管理的,并且是通过数据库语言来进行管理的,那么对于一些没有学习过数据库语言的人来说是如何对数据库进行操作的,这时我们就可以将数据库开发成数据库应用系统,终端用户可以通过数据库应用系统进而使用数据库管理系统,最后对数据库进行操作。数据库管理系统是为那些不了解数据库语言的人群开发的,根据不同的用户开发不同的应用程序,具有不同的功能。也就是说,使用数据库管理系统的有两种,一种是数据库管理员,数据库管理员设计出数据库,通过数据库语言使用数据库,另一种是数据库应用程序使用数据库管理系统。
2023-03-21 13:00:30
66
原创 Leet code 344.反转字符串
在涉及双指针以及循环时,一定要处理好循环的边界,搞清楚循环退出的条件是什么。以及要熟悉与运算在交换两个数时的使用,这种方式可以不需要引进辅助变量temp就可进行两数交换的操作。本题的字符串是通过字符型数组的形式给出,所以此题就与之前数组中的双指针题目十分相似。通过循环不断的进行遍历,在循环体中进行交换的操作。
2023-03-20 21:24:01
79
原创 二叉树理论基础
我们是通过数组的下标索引来寻找一个节点的左孩子和右孩子。若一个结点的下标为i,那么这个结点的左孩子的下标索引为2*i+1,这个结点的右孩子的下标索引为2*i+2。在满二叉树中,我们要注意的是如何计算满二叉树的总结点数,以及每一层结点的个数,以及已知满二叉树的总结点求这个二叉树的层数等二叉树基本的计算。完全二叉树:如图,度为0的结点只分布在二叉树的最后一层和导数第二层,在直观上的感受就是这个二叉树除了最后一层,其余层都是满的,并且最后一层从左到右是连续的,同样要熟悉完全二叉树的基本计算方法。
2023-03-19 14:42:33
81
原创 数制以及转化
如图所示,使用二进制进行编码的时候,相邻两编码之间不一定只有一位数发生改变,若是有两位数不一样,那么这两位数必定有一个是先变化的,这样就容易发生错误,并且会产生噪声(因为在转化的过程中产生了两种额外的编码)用格雷码可以表示16位二进制数,而且相邻只有一个位数发生变化。数是用来表示大小的,码制是用来表示状态的,无大小的含义。那么为什么要用格雷码进行编码呢?
2023-03-14 23:08:36
54
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人