2012年12月1日

摘要: 问题出在STL中多remove算法上面,这货根本就没有把合适的元素删除!!NEVER!它做的事情类似于排序,把需要删除的位置的元素用其他对象替换掉,而且调用多就是operator=。看代码:#include <iostream>#include <vector>#include <algorithm>using namespace std;namespace{ class MyObject{ public: // Constructor MyObject(int data): m_data(data) { cout<< "Con... 阅读全文
posted @ 2012-12-01 16:46 William.Wu 阅读(163) 评论(0) 推荐(0) 编辑

2012年10月29日

摘要: 原文:http://www.cnblogs.com/zhenjing/archive/2010/12/15/refactoring_2_patterns.html备注:1.模式常常组合使用,共同解决问题。2.模式是特定场景下优雅的解决方案,因此场景很关键。在软件设计中,特定的场景可能是显而易见的,可能是隐而不现的,有时甚至是设计者有意创造的。因此使用模式时,对问题的分析至关重要。3.模式的使用是有先后之分的。4.DP书中所给的结构图仅仅是模式可能的实现方式之一,但不是唯一。实现一个模式往往有多种途径。5.模式本身是比较复杂的。纯粹的为了模式而模式,并不会改善设计,相反会引入不必要的复杂性。之所 阅读全文
posted @ 2012-10-29 10:45 William.Wu 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 原文:http://www.cnblogs.com/zhenjing/archive/2010/12/13/Structural_pattern.html结构型模式涉及到如何组合类和对象以获得更大的结构。结构型类模式采用继承机制来组合接口或实现。结构型对象模式不是对接口和实现进行组合,而是描述了如何对一些对象进行组合,从而实现新功能的一些方法。因为可在运行时改变对象组合关系,所以对象组合方式具有更大的灵活性,而这种机制用静态类组合是不可能实现的。Adapter意图:将一个类的接口转换成客户希望的另外一个接口(转换接口)。Adapter模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。动 阅读全文
posted @ 2012-10-29 10:43 William.Wu 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 原文:http://www.cnblogs.com/zhenjing/archive/2010/12/14/behavioral_pattern.html 行为模式涉及到算法和对象间职责的分配。行为模式不仅描述对象或类的模式,还描述它们之间的通信模式。这些模式刻画了在运行时难以跟踪的复杂的控制流。它们将你的注意力从控制流转移到对象间的联系方式上。 行为型模式的三个典型特点:封装变化对象作为参数对发送者和接收者解耦Chain of Responsibility意图:为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象. 阅读全文
posted @ 2012-10-29 10:43 William.Wu 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 原文:http://www.cnblogs.com/zhenjing/archive/2010/12/09/design_category.html模式的分类 模式依据其目的可分为创建型(Creational)、结构型(Structural)、或行为型(Behavioral)三种。创建型模式与对象的创建有关;结构型模式处理类或对象的组合;行为型模式描述类或对象之间的职责分配和交互。 根据范围准则,模式可分为类模式和对象模式。类模式处理类和子类之间的关系,这些关系通过继承建立,是静态的,由编译时确定。对象模式处理对象间的关系,这些关系在运行时刻是可变化的,更具动态性。从某种意义上来说,几乎所.. 阅读全文
posted @ 2012-10-29 10:42 William.Wu 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 原文:http://www.cnblogs.com/zhenjing/archive/2010/12/07/disign_pattern.html模式与设计的关系 每个模式都描述了某个特定场景中一个特定问题的约束因素/动机和关系,并为设计者提供一种解决这些问题的优雅方案。换句话说,模式仅仅是描述了特定场景下的关系和约束因素,正因如此,模式本身并不是最重要的,特定场景下的关系和约束因素才是最真实的,而模式仅仅是提供了一组描述这些关系的一组词汇,提供了一套解决这些关系的优雅方式而已。 在软件设计中,模式是随特定场景下的关系和约束因素而定的。也就是说,对所要解决问题的分析和理解是使用模式的必要条.. 阅读全文
posted @ 2012-10-29 10:41 William.Wu 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 原文:http://www.cnblogs.com/zhenjing/archive/2010/12/06/pritciple_design_pattern.html说明:这些资料仅仅是对设计模式的一些总结,没有设计模式的相关知识,很难看懂。即使看懂了这些,也仅说明理解了模式的基本思想。想要学好设计模式,还是建议好好看文后所列的参考书籍和推荐书籍。 这些总结有不少是根据自己的理解写成的,或许并不正确。如果您有不同的看法,请告知作者,谢谢! 欢迎传阅,但是请勿随意修改或Copy。设计模式简介 每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。 -- Christ... 阅读全文
posted @ 2012-10-29 10:40 William.Wu 阅读(335) 评论(0) 推荐(0) 编辑

2012年10月24日

摘要: C++0x中加入了右值引用,和move函数。右值引用出现之前我们只能用const引用来关联临时对象(右值)(造孽的VS可以用非const引用关联临时对象,请忽略VS),所以我们不能修临时对象的内容,右值引用的出现就让我们可以取得临时对象的控制权,终于可以修改临时对象了!而且书上说配合move函数,可以大大提高现有C++的效率。那么是怎样提高它的效率的呢?看段代码先! #include <i... 阅读全文
posted @ 2012-10-24 10:02 William.Wu 阅读(11504) 评论(3) 推荐(5) 编辑

2012年10月19日

摘要: 我认为,C++中类型转换是函数重载甚至是函数模板自动推演的基础,它是选择候选函数的依据。所以,下面就唠叨一下吧。这里不讨论具体的转换方法,比如怎么从string转换成int,这里主要讨论的是语言方面的理论,大部分内容在c++ primer里都可以找到。首先,类型转换分成隐式类型转换和显式类型转换两种。primer中又把算术转换和旧式强制类型转换独立出来了,它们还是分别属于隐式和显式两种的。对于内置类型之间的转换就没有啥说的了(STL中的转换函数也已经实现的很完整了)。复杂的地方在于自定义类类型的类型转换上面。在没有特殊设计的情况下,自定义类型和其他类型之间是没有转换关系的,只有设计好相应的转换 阅读全文
posted @ 2012-10-19 11:10 William.Wu 阅读(380) 评论(0) 推荐(0) 编辑

2012年9月24日

摘要: C语言的初学者可能会对,常量指针、指向常量的指针、常量指向常量的指针迷糊一阵。但毕竟也就那么几种情况,熟悉了之后就可以理解了。C++中又多了一个叫做引用的东西,其实这几个东西各自使用也挺简单的,但是如果组合到一起那真叫一个奇葩!相信很有经验的C++程序员也会迷糊一阵!下面我们就说说这个奇葩的东西! 情况1: const + pointer 这个就是我们开头说的C中也存在的奇葩组合。看代码... 阅读全文
posted @ 2012-09-24 16:20 William.Wu 阅读(503) 评论(0) 推荐(0) 编辑

导航