摘要: 单例模式1)一个类只允许存在唯一的实例(由类的提供者来保证),并提供该实例的访问方法。2)实现单例模式思路 》 禁止在类的外部创建对象:私有化构造函数 原因:用来避免创建该类的实例对象 》 类的内部维护唯一的对象:静态成员对象 原因:类不能产生实例,所以是不完整的类型,不能创建不完整类型的变量,除非 阅读全文
posted @ 2018-11-06 16:10 朴者 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 1.当我们看到赋值符号时,请小心,因为"="也可以用来调用copy构造函数 Widget w3 = w2; //调用copy构造函数,而不是copy赋值操作符 2.不明确的行为: int *p = 0; // p是个null指针 cout<<*p; // 对一个null指针取值是不明确的行为 3.常 阅读全文
posted @ 2018-11-05 20:55 朴者 阅读(120) 评论(0) 推荐(0) 编辑
摘要: day08 1. map又称为关联数组。 使用map来写单词计数程序 E1: map<string, size_t> word_count; string word; while (cin >> word) { ++word_count[word]; // map中的下标操作符[],如果word不在 阅读全文
posted @ 2018-11-01 23:03 朴者 阅读(152) 评论(0) 推荐(0) 编辑
摘要: day07 1.io对象不能拷贝或赋值,进行io操作的函数,通常以引用方式传递和返回流。读写一个io对象会改变其状态,所以传递和返回的引用不能是const的。2.【在使用基类对象的地方,可以用子类对象来代替】。 vector介绍1.vector用于操作大小的函数有size(),max_size(), 阅读全文
posted @ 2018-10-31 22:26 朴者 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 书接上文。 输入一组数,找出其中满足某种条件的数。 短短的一句话,可以衍生出各种场景。今天遇到一道题,输入一些学生的分数,哪个分数出现的次数最多?如果有多个并列,从大到小输出。分数均为不超过100的非负整数。 我首先想到的是利用哈希表,用空间换时间。 1 #include<iostream> 2 u 阅读全文
posted @ 2018-09-28 19:23 朴者 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 1.输入一组数,找出它的最大值,最小值,平均值。 关键点是要把第一个数赋值给min,max,sum 2.输入一组数,找出最接近的两个数。 3.输入一组数,找出第二大的数。 思路:利用两个变量,一个存储用来最大数(初始化为输入的第一个数),一个用来存储第二大的数(初始化为-INT_MAX),输入过程中 阅读全文
posted @ 2018-09-27 18:46 朴者 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 顺序队列一般实现为循环队列,因为普通的队列可能产生“假溢出”。 循环队列的两个状态: 1.队空 2.队满 (注意,循环队列必须损失一个存储空间,用来区分队空和堆满,如果队列中的所有空间对被占满,那么队空和队满的状态都是qu.front == qu.rear,导致无法区分) 循环队列的两个操作: 1. 阅读全文
posted @ 2018-09-26 15:31 朴者 阅读(2019) 评论(0) 推荐(0) 编辑
摘要: 栈可以是顺序栈,也可以是链栈。 顺序栈: 顺序栈还可以更简化,使用数组来创建: 链栈: 栈的应用: 1. 编写算法,判断一个算术表达式中的括号是否配对。表达式已经存入字符数组中,元素从下标1开始存储,表达式中的字符个数为n 思路:遍历这个表达式,当遇到第一个 '(' 时,入栈,继续遍历,如果遇到 ' 阅读全文
posted @ 2018-09-25 19:40 朴者 阅读(891) 评论(0) 推荐(0) 编辑
摘要: 链表需要包含的操作有头插法建立链表、尾插法建立链表、在指定位置插入元素、打印链表、删除链表、寻找中间元素、单链表 1 // 定义一个链表及相关操作 阅读全文
posted @ 2018-09-25 16:02 朴者 阅读(2533) 评论(0) 推荐(0) 编辑
摘要: 思路:因为A,B链表中元素递增有序,要使归并后的C也递增有序,可以每次从A、B中挑出最小的元素插入C的尾部,这样循环插入完成后,C也一定是递增有序的。 需要注意的点是,A、B中的元素有可能一个已经全部被插入到C中,而另一个还没插完。 如果题这样改:A、B递增有序,合并成C后,C递减有序,怎么做? 前 阅读全文
posted @ 2018-09-25 11:54 朴者 阅读(5933) 评论(0) 推荐(0) 编辑