- 博客(25)
- 问答 (1)
- 收藏
- 关注
原创 UML中的关系
UML中的关系1、依赖(dependency)ProductWorker--->Math表示ProductWorker依赖于Math从层次结构来看,这两个类是属于同一层的 依赖关系主要表现为方法的参数,静态方法的调用public class ProductWorker{ private double baseSalary; private int piece;
2015-06-16 08:58:16
600
原创 向对象的的基本特征:抽象,封装,继承,多态
抽象: 抽象就是提取出事物之间的共性,即个体所属的类别的共有属性和方法。 比如我们要设计一个ArrayList容器,它的底层是用数组实现,并且能够实现当容量不足时,申请一个更大的数组,将原数组的内容复制过去。 首先,分析出ArrayList是属于容器,那么我们要抽象出容器的共性。 即一个Collection接口,然后再让ArrayList类继承这个接口,即类的实现要依赖
2015-06-15 13:49:54
802
原创 防止指针悬挂的方法
为了解决指针悬挂这个问题有下面两种方法1、使用智能指针(看了C++primer才知道的)2、在拷贝构造函数和赋值操作符中为左操作数重新分配资源,然后复制内容(即使用深拷贝)智能指针是让多个对象的指针指向一个空间,共享这一空间(共享也是有坏处的)智能指针是使用一个计数器,当该计数器为0时才会释放指针指向的内存每次创建新类的对象时
2014-03-29 16:40:24
1095
原创 为什么赋值运算符要防止自身赋值
为什么赋值运算符要防止自身赋值呢??如果类里面含有指针指向动态分配的资源的话,那么自身赋值就可能出错有可能导致把自己给释放了如下面:#include#include#includeusing namespace std;class A{public: char *ptr; A(){ptr = nullptr
2014-03-29 15:41:41
2448
原创 读书笔记——继承
继承分为三种:public private protected不管何种继承,派送类都不能直接访问基类的private成员,必须通过接口访问不管何种继承,派生类都能直接访问基类的protected成员,但是派生类对象就不能直接访问基类的protected成员不管何种继承,派生类都能直接访问基类的public成员,但是只有public继承才能使派生类对象直接访问基类
2014-03-27 16:18:02
535
原创 字符串处理--HDU第2609解题报告
题目链接这题本来不明白是什么意思,还以为是每个串的数字加起来,如果相等就表明是相等的串,但原来不来。而是--》如果两个串是同构串,那么这两个串相等,为一个相同的串,我们就是要找出给出的数据中有多少不同的串。这就要用找最小表示法了,如果两个串是同构串,那么这两个串的最小表示S1 == S2http://blog.youkuaiyun.com/u012501262/article/deta
2014-03-23 08:51:38
604
原创 最小表示法
最小表示法就是找出字符串S的的循环同构串中字典序最小的一个。那么什么是循环同构串呢。--设S=bcad,且S’是S的循环同构的串。S’可以是bcad或者cadb,adbc,dbca即在字符串S中从i>=0开始,从i循环到字符串末尾,再从头循环到i,所形成的字符就是S循环同构串。因为这样的同构串不止一个,所以我们要找出其中字典序最小的一个(即字符串从小到大排序,其中最小的
2014-03-23 08:25:00
1239
原创 字典树
因为做题的需要,花了点时间学了字典树。原来字典树是那么的简单,我还以为很难呢。在我看来,字典树就是为了方便查找。从下面篇博客就能知道为什么在我看来字典树就是为了查找。http://blog.youkuaiyun.com/u012501262/article/details/21695033http://blog.youkuaiyun.com/u012501262/article/details/2
2014-03-21 16:29:03
566
原创 字符串处理--HDU第1251解题报告
题目链接这题目,如果单单接收数据,然后一个个比较的话,肯定是会超时的。所以要用字典树或者map容器,由于还没有学会字典树,所以采用map容器。那该怎么使用呢?将每个单词的所有前缀都作为键,前缀的个数作为值,存入map容器map[s1]+=1;如果容器中无前缀则为1,如果有,则在基础上+1然后,就可以直接用第二部分的字符串数据当作下标来访问容器,返回值就是以该字符串为
2014-03-21 12:12:49
660
原创 字符串处理--HDU第1131解题报告
题目链接题目有两部分的输入,第一部分是字典第二部分是打乱顺序的单词。我们要做的是从字典中找到能能形成 “打乱顺序的单词 “的单词。然后依照字典顺序输出。那么这么样才能判断字典中的单词能形成“打乱顺序的单词 “呢?只要对两个单词进行排序,然后比较是否相等,就能知道了。字典的存储采用map容器。下面是代码:#include#include#i
2014-03-20 22:49:47
535
原创 字符串处理--HDU第1075解题报告
题目链接该题目最初的想法是将没一行的字典数据用string接收,然后存入vector数组中。然后题目的问题只变成了从vector的每个元素中查找火星人说的话,然后用英语替代。可是写完后,时间顿时报表。原来是搜索占据了太大的时间。下面是超时代码:#include#include#include#includeusing namespace std;void t
2014-03-19 21:19:20
638
原创 字符串处理--HDU第1073解题报告
题目链接该题最关键的是如何接收数据,想不明白之前,感觉这题真TM难,可想明白之后,。。。好了。下面是思路:用string类接收START之后,END之前的字符串,并存入容器中。然后用==比较容器,如果相等,即数据一模一样,则AC否则,将容器中的字符连起来,形成一个长字符,然后去除格式之后再比较string的大小如果相等,则PE,否则WA。千辛万苦终AC
2014-03-18 21:58:40
605
原创 字符串处理--HDU第1062解题报告
题目链接思想很简单,接收字符串,然后写个函数,遍历字符串,遇到空格或者遇到串为就逆序输出。下面是代码:#include#include#includeusing namespace std;void output_the_right_string(string str);int main(){ string str; int n;
2014-03-18 15:56:38
615
原创 字符串处理--HDU第1039解题报告
题目链接要满足三个条件,所以最好一点写成一个函数,这样做就不会像全部代码都在main()函数中写一样,要考虑很多细节。这三个函数都很简单。(我再也不用划译了,条件二给翻译错了,哎,加强英语吧)下面是代码:#include#includeusing namespace std;bool rule_one(string &str);bool rule_two(s
2014-03-17 17:43:22
476
原创 字符串处理--HDU第1020题解题报告
题目链接首先想到是是用string类来做,但是string类好像不支持sprintf函数,所以改用C语言中的字符串来处理。至于为什么要用sprinf,等下解释。该题的思路是找出相邻相等的字符,然后统计个数,把个数写进字符串中,然后删除多余的字符,但是删除麻烦,就用惰性删除的方法(不知道在哪看到的这个名词)如果相同字符的个数小于10时,可以直接赋值写进字符串 str[in
2014-03-17 13:02:42
681
转载 while(cin>>a)的原理
>>运算符返回的是流对象的引用,那么题目就变成了 while(cin); 这好像有点奇怪,上网找了答案这是地址http://tech.ddvip.com/2013-11/1385568597206484.html
2014-03-07 07:41:24
2636
原创 构造函数与初始化列表是不同的
今天在《C++ prime》(真是一本好书啊,刚买来看,就学到了不少东西,果然学编程是幸福的,有那么多好书可以看)中看到了初始化列表和构造函数的不同之处。它们的不同之处在于--初始化列表是真正的初始化 ---相当于int a = 10;而构造函数的函数体中的初始化(应该不能叫做初始化了)只是赋值而已 ---相当于 int a; a = 10;这些不同是可以在其他C++书
2014-03-06 16:11:21
669
原创 关于相互依赖的类,如何不报错
名词:--声明: class A;只声明而不在此处定义,告诉编译器有这个类型,那么你就可以使用这个类型了,但这个类型的使用是受限的(在定义之前的使用)不完全类型:上面的类型就是不完全类型,该类型只能用来定义指向该类型的指针或则引用。在创建类的对象之前,必须完整地定义该类,同样在使用指针或者引用访问该类成员时,必须已经定义了类。#includeusin
2014-03-06 15:22:18
680
原创 C/C++ACM入门之输入函数格式控制
C的输入函数scanf比C++的输入含税cin快多了,所以在进行大规模数据录入的时候,一般是使用scanf 关键字: 空白:包括space Tab Enter 扫描前导空白:即扫描缓冲区中的空格,并丢弃 C输入函数 scanf 、gets、 fgets 、getchar() scanf(只介绍格式控制符是 %c、%s的情况)
2014-03-05 20:00:10
780
原创 三种继承
/*protected与继承的关系如果类中有protected,如果该类没有被继承,那么protected成员相当于private成员如果该类被继承,那么基类中的protected成员对派生类可见,对对象不可见 */私有继承#includeusing namespace std;class base{private: int x
2014-02-22 20:30:14
485
原创 关于const与临时变量与函数返回值
c++中函数的返回值是存储在临时变量中的下面是个实验如图,func2函数建立的引用不是func1形参x的引用,而是临时变量的引用(这个引用比指针好用,因为你无法取得临时变量的地址,所以无法建立指向临时变量的指针)所以说函数的返回值是存储在临时变量中的const与函数返回值的类型有什么关系呢?c++默认函数的返回值是const型看下面:cons
2014-02-20 16:12:17
1149
原创 关于引用形参的解释
void swap(int & x,int &y){ int temp = x; x = y; y = temp;}可调用函数swap(first,secord);//交换两个数字的值其实函数被翻译为void swap(int *x,int *y){ int
2014-02-19 15:03:57
774
原创 C++对象
学完C,学C++时,完全搞不清楚对象是什么。什么对象,什么程序是由对象+数据结构组成的。完全摸不着头脑。但当我发现,只要把程序看成是一个世界,那么程序是由一个个对象构成就很容易理解了。对象有属性和功能。如一个游戏世界,怪物是一个对象,角色也是一个对象。怪物和角色都有血量、攻击力、防御力等等...角色的功能是攻击,怪物的收到攻击就会掉血,这就是怪物的功能。
2014-02-16 14:10:39
497
空空如也
对于程序分为代码段和数据段的一些疑问?
2015-12-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人