摘要: 常成员函数 对常成员函数进行操作时,需要强调的是,必须在成员函数的声明和定义处同时加上 const 关键字。char *getname() const和char *getname()是两个不同的函数原型,如果只在一个地方加 const 会导致声明和定义处的函数原型冲突。 (重点!重点!重点!) 最后 阅读全文
posted @ 2020-07-14 23:08 肥泽~ 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 图-存储结构-邻接矩阵 使用邻接矩阵存储图时需要两个数组,一个数组存放图中顶点本身的数据(一维数组),另外一个数组用于存储各顶点之间的关系(二维数组)。 存储图中各顶点本身数据,使用一维数组就足够了;存储顶点之间的关系时,要记录每个顶点和其它所有顶点之间的关系,所以需要使用二维数组。 不同类型的图, 阅读全文
posted @ 2020-07-14 21:49 肥泽~ 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 如果派生类中的成员(包括成员变量和成员函数)和基类中的成员重名,那么就会遮蔽从基类继承过来的成员。所谓遮蔽,就是在派生类中使用该成员(包括在定义派生类时使用,也包括通过派生类对象访问该成员)时,实际上使用的是派生类新增的成员,而不是从基类继承来的。 下面是一个成员函数的名字遮蔽的例子: #inclu 阅读全文
posted @ 2020-07-14 21:35 肥泽~ 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 编译器只有在一个类中没有一个构造函数的时候自动生成默认构造函数,当类中有任何一个类的时候,系统便不会再生成默认构造函数。 基类的成员变量在派生类中不可直接访问,但可以以间接访问,例如通过调用基类的成员函数来实现。 不同继承方式的影响主要体现在: 派生类成员对基类成员的访问权限; 通过派生类对象对基类 阅读全文
posted @ 2020-07-14 21:32 肥泽~ 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 虚继承产生原因: C的多继承很容易产生命名冲突,为了解决这一问题,C 提出了虚继承,使得在派生类中只保留一份间接基类的成员。 虚继承的本质: 让某个类做出声明,承诺愿意共享它的基类。其中,这个被共享的基类就称为虚基类。在这种机制下,不论虚基类在继承体系中出现了多少次,在派生类中都只包含一份虚基类的成 阅读全文
posted @ 2020-07-14 21:30 肥泽~ 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 基类成员和派生类成员的名字一样时会造成遮蔽,这句话对于成员变量很好理解,对于成员函数要引起注意,不管函数的参数如何,只要名字一样就会造成遮蔽。换句话说,基类成员函数和派生类成员函数不会构成重载,如果派生类有同名函数,那么就会遮蔽基类中的所有同名函数,不管它们的参数是否一样。 在创建派生类的对象时,需 阅读全文
posted @ 2020-07-14 21:29 肥泽~ 阅读(204) 评论(0) 推荐(1) 编辑
摘要: 前缀表达式求值: 对于一个前缀表达式的求值而言,首先要从右至左扫描表达式,从右边第一个字符开始判断,如果当前字符是数字则一直到数字串的末尾再记录下来,如果是运算符,则将右边离得最近的两个“数字串”作相应的运算,以此作为一个新的“数字串”并记录下来。一直扫描到表达式的最左端时,最后运算的值也就是表达式 阅读全文
posted @ 2020-07-14 21:27 肥泽~ 阅读(213) 评论(0) 推荐(0) 编辑
摘要: map简介 map是STL中的一个关联式的容器,可以建立key(first)和value(second)一对一的联系,由key映射到value。 map内部自建了一棵红黑二叉树,可以对数据进行自动排序,所以map里的数据都是有序的,这也是我们通过map简化代码的原因。 使用map需要声明头文件#in 阅读全文
posted @ 2020-07-14 21:23 肥泽~ 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 使用string类要加头文件#include<string> 下面的例子介绍了几种定义 string 变量(对象)的方法: #include <iostream> #include <string> using namespace std; int main(){ string s1; string 阅读全文
posted @ 2020-07-14 21:15 肥泽~ 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 首先可以考虑自己写dfs函数对全排列问题进行求解。 参考代码如下: #include<iostream> using namespace std; int a[10010],b[10010]; long long int total=0; int n; void dfs(int k) { if(k> 阅读全文
posted @ 2020-07-14 20:56 肥泽~ 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 类和对象 最简单的类: class A;//没有任何属性和行为 对象: A obj=new A(); 类是定义,是规范,是“死”的东西。类似于水果这个概念,实际上并不存在。 对象是实例,是类的一个实现,是一个具体的东西。 A obj1=new A(); A obj2=new A(); 以上有两个对象 阅读全文
posted @ 2020-07-14 20:54 肥泽~ 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 据说,__int128只能在linux环境下才能编译成功,不过大多数OJ都是用linux为后台,所以掌握__int128还是很重要的。 __int128的输入输出模板: #include<iostream> using namespace std; inline __int128 read() { 阅读全文
posted @ 2020-07-14 20:52 肥泽~ 阅读(888) 评论(0) 推荐(0) 编辑
摘要: KMP算法是一种性能比较好的字符串匹配算法。 首先,在理解性能比较好的KMP算法之前,我们首先要先想一下对于字符串匹配的朴素暴力做法我们一般是怎么做出来的。 举个例子: 对于主串s[n],子串p[m]。我们要计算子串p[m]在主串中出现的位置的话。核心代码一般是下面这个样子的: for(int i= 阅读全文
posted @ 2020-07-14 20:46 肥泽~ 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 同时按住Java中的Alt键和'/'键,Eclipse会给你代码提示。 java 的几个基本概念 1. JVM : java 虚拟机.运行java 程序的根本 2. JRE : java 运行环境,java 虚拟机+ 核心类库 3. JDK :java 开发工具包 JDK > JRE > JVM j 阅读全文
posted @ 2020-07-14 19:54 肥泽~ 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,那么这样的类称为抽象类。需要注意的是上面我们并没有强调一个抽象类必须要拥有抽象方法。也就是说,一个类只要它没有包含足够的信息来描绘一个具体的对象 阅读全文
posted @ 2020-07-14 17:23 肥泽~ 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 代码如下: #include<iostream> #include<algorithm> #include<cstring> using namespace std; int a[200005]; int main() { ios::sync_with_stdio(false); int t,n; 阅读全文
posted @ 2020-07-14 14:07 肥泽~ 阅读(121) 评论(0) 推荐(0) 编辑