摘要: 原文地址:http://www.uml.org.cn/oobject/201104212.asp在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition)。下面我们结合实例理解这些关系。基本概念类图(Class Diagram): 类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。 阅读全文
posted @ 2013-08-21 21:21 sandyhit 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 看了多篇讲解蓄水池问题的文章,感觉下面转载的这一篇是证明最为严谨的。原文地址:http://www.cnblogs.com/growup/archive/2012/02/07/2341912.html如何在事先不知道文本文件行数n的情况下读取该文件,从中随机选择并输出一行?(事先不知道n的大小,但是一次可以看到这n个对象)即蓄水池抽样(Reservoir Sampling)问题证明如下: 问题: 证明当前任意一行为取出行的概率为1/i,i为当前扫描到的行号,也即每一行取出的概率相等 我们用数学归纳法来证明,当i=1时,当前只浏览了第一行,因此第一行为取出行的概率为1/1=1,符合直接取出的条件 阅读全文
posted @ 2013-08-21 21:18 sandyhit 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://blog.csdn.net/hackbuteer1/article/details/7475622多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphisn),字面意思多种形状。 C++多态性是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖(override),或者称为重写。(这里我觉得要补充,重写的话可以有两种,直接重写成员函数和重写虚函数,只有重写了虚函数的才能算作是体现了C++多态性)而重载则是允许有多个同名的函数,而这些函数的参数列表不同,允许. 阅读全文
posted @ 2013-08-21 11:17 sandyhit 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://blog.csdn.net/hackbuteer1/article/details/7729451一、deque的中控器 deque是连续空间(至少逻辑上看来如此),连续线性空间总令我们联想到array或vector。array无法成长,vector虽可成长,却只能向尾端成长,而且其所谓的成长原是个假象,事实上是(1)另觅更大空间;(2)将原数据复制过去;(3)释放原空间三部曲。如果不是vector每次配置新空间时都有留下一些余裕,其成长假象所带来的代价将是相当高昂。 deque系由一段一段的定量连续空间构成。一旦有必要在deque的前端或尾端增加新空间,便配置一段定量 阅读全文
posted @ 2013-08-21 09:33 sandyhit 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://blog.csdn.net/hackbuteer1/article/details/7726116相较于vector的连续线性空间,list就显得复杂许多,它的好处是每次插入或删除一个元素,就配置或释放一个元素空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素移除,list永远是常数时间。 list不仅是一个双向链表,而且还是一个环状双向链表。另外,还有一个重要性质,插入操作和接合操作都不会造成原有的list迭代器失效,这在vector是不成立的。因为vector的插入操作可能造成记忆体重新配置,导致原有的迭代器全部失效。甚 阅读全文
posted @ 2013-08-21 09:18 sandyhit 阅读(141) 评论(0) 推荐(0) 编辑
摘要: vector容器概述 vector的数据安排以及操作方式,与array非常相似。两者的唯一区别在于空间的运用的灵活性。array是静态空间,一旦配置了就不能改变;要换个大(或小)一点的房子,可以,一切琐细都得由客户端自己来:首先配置一块新空间,然后将元素从旧址一一搬往新址,再把原来的空间释还给系统。vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。因此,vector的运用对于内存的合理利用与运用的灵活性有很大的帮助,我们再也不必因为害怕空间不足而一开始要求一个大块头的array了,我们可以安心使用array,吃多少用多少。 vector的实现技术,关键在于其对大小 阅读全文
posted @ 2013-08-21 09:09 sandyhit 阅读(96) 评论(0) 推荐(0) 编辑