C++
文章平均质量分 69
life_liver
这个作者很懒,什么都没留下…
展开
-
C++ hash_map
使用hash_map时,应包含头文件hash_map,即#include然后查看hasp_map定义在那个命名空间中(一般光标指到头文件的名称处,鼠标右键“打开文档”就可以查看该头文件,打开该头文件以后,就可以在顶部看到它输于哪个命名空间),在VIsual C++ 2008速成版中,包含hash_map的命名空间是stdext。加入你using这个命名空间,那么必须要先using才可以使用原创 2013-05-02 13:46:47 · 749 阅读 · 0 评论 -
C++设计模式之十九--Visitor访问者模式
转自:http://www.cnblogs.com/wanggary/archive/2011/04/21/2024099.html 概念:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。main(),客户IVisitor,访问者接口CBaseVisitor,访问者实现类CEmployee,被访问者抽象类C转载 2013-11-10 21:23:43 · 794 阅读 · 0 评论 -
C++设计模式之十七--Observer观察者模型
转自:http://www.cnblogs.com/wanggary/archive/2011/04/20/2022975.html 概念:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。main(),IObservable,被观察者接口CHanFeiZiObservable,被观察者韩非子IObserve转载 2013-11-10 20:20:46 · 987 阅读 · 0 评论 -
C++设计模式之十四--Decorator装饰模式
转自:http://www.cnblogs.com/wanggary/archive/2011/04/18/2020254.html 装饰模式,动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。13.1.解释main(),老爸ISchoolReport,成绩单接口CFourthGradeSchoolReport,四年转载 2013-11-10 16:57:07 · 604 阅读 · 0 评论 -
C++设计模式之十一--Template_Method模版方法模式
转自:http://www.cnblogs.com/wanggary/archive/2011/04/15/2016619.html 模板模式也是相当简单的一种模式,而且是比较常用的。模板模式是定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。cbf4life举的例子是悍马车模型,更转载 2013-11-10 11:19:33 · 742 阅读 · 0 评论 -
C++设计模式之十--Adapter适配器模式
转自:http://www.cnblogs.com/wanggary/archive/2011/04/13/2015335.html 适配器模式,使用之处比较特殊,不属于常规设计模式,主要用于不同系统之间的处理。是将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。也是一个比较简单的模式,直接上代码了。看代转载 2013-11-10 11:05:41 · 735 阅读 · 0 评论 -
C++设计模式之九--Prototype原型模式
转自:http://www.cnblogs.com/jiese/archive/2013/07/01/3164428.html 作用:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Prototype模式提供了一个通过已存在对象进行新对象创建的接口(Clone), Clone()实现和具体的语言相关,在C++中通过拷贝构造函数实现。转载 2013-11-07 21:18:48 · 973 阅读 · 0 评论 -
C++设计模式之八--Builder建造者模式
转自:http://www.cnblogs.com/jiese/p/3161076.html作用:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Builder模式和AbstractFactory模式在功能上很相似,因为都是用来创建大的复杂的对象,它们的区别是:Builder模式强调的是一步步创建对象,并通过相同的创建过程可以获得不同的结果转载 2013-11-07 20:56:02 · 689 阅读 · 0 评论 -
C++设计模式之二--Proxy代理模式
转自:http://www.cnblogs.com/wanggary/archive/2011/04/08/2009965.html 代理,一看名字就知道这只是个中介而已,真实的执行者在代理的后面呢。cbf4life在他的书里提的例子也很有趣,更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com。现在贴代码,以方便随用随取。2.1.解释main(),西门庆转载 2013-11-05 19:47:16 · 610 阅读 · 0 评论 -
C++设计模式之二十--State状态模式
转自:http://www.cnblogs.com/wanggary/archive/2011/04/21/2024117.html 概念:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。main(),客户CLiftState,电梯状态抽象类CCloseingState,电梯门关闭COpenningState,电梯门打开CRunnin转载 2013-11-11 09:38:30 · 895 阅读 · 0 评论 -
C++设计模式之二十一--Mediator中介者模式、Interpreter解释器模式、Flyweight享元模式、Memento备忘录模式
转自:http://www.cnblogs.com/wanggary/archive/2011/04/21/2024295.html Mediator(中介者模式)概念:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。main(),客户IAbstractMediator,中介者接口CM转载 2013-11-11 09:57:17 · 879 阅读 · 0 评论 -
提高性能知识点
1、在内存拷贝的过程中,使用类型的强制转换的效率是使用memcpy的效率的至少两倍。例子如下:char src[8]="hello";char dest[8]="";long int idest; //假设为64位系统,long类型占8个字节memcpy(dest,src,8); //拷贝方式一idest=*(int*)src; //拷贝方式二以上例子中,拷贝方式二的原创 2013-11-11 19:08:59 · 793 阅读 · 0 评论 -
高并发学习积累
1、高并发的环境下一点点性能的提高就能带来整个环境很大幅度的性能提高。原创 2013-11-11 19:03:11 · 926 阅读 · 0 评论 -
C++string类
1、string对象支持下标操作以下代码是正确的:string str1="hello";str1[2]='o';cout执行结果为:heolo2、用string对象或C类型字符串的某个片段来构造新的string对象的构造函数有4种以下代码列出了4种以某个字符串的第i个字符和第j个字符之间的子字符串构造新字符串的方法:int i=5,j=11;string str原创 2013-11-11 15:44:30 · 876 阅读 · 0 评论 -
C++设计模式之十二--Bridge桥梁模式
转自:http://www.cnblogs.com/wanggary/archive/2011/04/17/2019067.html 桥梁模式,将抽象部分与它的实现部分分离,使它们都可以独立地变化。实现分离的办法就是增加一个类,11.1.解释main(),客户IProduct,产品接口CHouse,房子CIPod,ipodCClothes,服装CNe转载 2013-11-10 15:37:41 · 739 阅读 · 0 评论 -
C++设计模式之十八--Chain of Responsibility责任链模式
转自:http://www.cnblogs.com/wanggary/archive/2011/04/20/2022988.html 概念:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。main(),客户IWomen,发出请求者接口CWomen,请求者实现类CHan转载 2013-11-10 20:38:48 · 872 阅读 · 0 评论 -
C++设计模式之十六--Composite组合模式
转自:http://www.cnblogs.com/wanggary/archive/2011/04/19/2021638.html 概念:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合的使用具有一致性。main(),客户CCorpNode,抽象基类,实现基本信息CBranchNode,树枝节点,实现Addordina转载 2013-11-10 20:06:53 · 722 阅读 · 0 评论 -
C++设计模式之十五--Iterator迭代器模式
转自:http://www.cnblogs.com/wanggary/archive/2011/04/19/2021600.html 概念:提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。main(),客户IProject,产品接口CProject,产品类IIterator,迭代器接口IProjectIterator,产品迭代器接口C转载 2013-11-10 19:47:35 · 676 阅读 · 0 评论 -
C++设计模式之十三--Command命令模式
转自:http://www.cnblogs.com/wanggary/archive/2011/04/18/2020230.html 命令模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。应该是一个比较简单的模式了。 12.1.解释 main(),客户 CInvoker,命令接收者,如项目经理转载 2013-11-10 16:26:08 · 714 阅读 · 0 评论 -
C++设计模式--Strategy策略模式
转自:http://www.cnblogs.com/wanggary/archive/2011/04/07/2008796.html 无意中,从网上下到一本电子书《24种设计模式介绍与6大设计原则》,很好奇这里有24种设计模式,印象中GOF写的《设计模式》(Design Patterns),好像只有23种吧。运行起来一看,还真挺吸引咱的,里面提到的例子都很有趣。很感谢作者写出这样好的例子来转载 2013-11-05 19:24:28 · 626 阅读 · 0 评论 -
C++设计模式之七--AbstractFactory抽象工厂模型
抽象工厂,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。对于工厂方法来说,抽象工厂可实现一系列产品的生产,抽象工厂更注重产品的组合。看代码:7.1.解释main(),女娲IHuman,产品接口CYellowHuman,抽象产品之一CYellowFemaleHuman,具体产品之一CYellowMaleHuman,具体产品之二CWhiteHuma转载 2013-11-05 22:17:35 · 730 阅读 · 0 评论 -
求二叉树节点的最大距离
题目:如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的。我们定义“距离”为两个节点之间边的条数。写一个程序,求一颗二叉树中相距最远的两个节点之间的距离。解法: C++代码如下:#includeusing namespace std;struct node //structure of the node on the binary search tree{原创 2013-10-08 20:13:32 · 624 阅读 · 0 评论 -
模拟大数据处理之——bitset
模拟类似的题目:在2.5亿个整数中找出不重复的整数,注,内存不足以容纳这2.5亿个整数。解决方法:采用2-Bitmap(每个数分配2bit,00表示不存在,01表示出现一次,10表示多次,11无意义)进行,共需内存2^32 * 2 bit=1 GB内存,还可以接受。然后扫描这2.5亿个整数,查看Bitmap中相对应位,如果是00变01,01变10,10保持不变。所描完事后,查看bitmap,把原创 2013-10-05 23:23:58 · 1419 阅读 · 1 评论 -
模拟大数据处理、linux下hash_map()使用
写一个程序模拟大数据处理方法。模拟情景:访问日志里有100万条ip,每条ip占一行。现在要求访问次数最高的前3个ip(后面称作top3)。(假设我们的内存不足以同时处理100万条ip)。处理方法:逐条处理100万条ip中的每一条ip,根据hash值将ip写入到不同的小文件中(相同hashcode的ip写入同一个小文件中),对每个小文件用hash_map统计每一条ip出现的次数,然后针对每一原创 2013-10-05 19:54:15 · 965 阅读 · 0 评论 -
判断字符串interleave
问题描述:给定三个字符串str1、str2和str,判断str是否为str1和str2的interleave。如str1="abc",str2="def",str="adbecf",那么str就是str1和str2的interleave。即str中包含str1和str2中的所有字符,且str1和str2中的字符在str中的相对顺序没变,如str1中'a'在'b'前,'b'在'c'前,在str中虽然原创 2013-09-18 19:57:08 · 1043 阅读 · 0 评论 -
邻接表--创建图、删除图、深度优先搜索、广度优先搜索---代码
以下给出了以邻接表表示图时的:图建立、图删除、深度优先遍历、广度优先遍历的代码。#include#includeusing namespace std; struct edge //structure of edge{ int vertex1_index; int vertex2_index;}; struct edge_node //st原创 2013-09-18 19:29:56 · 783 阅读 · 0 评论 -
数组中找最大差值
题目:写一个函数,在一个数列中找到差值最大的两个点,注意一定是后面的值减去前面的值。解题思路:从后往前遍历数组,记录到当前位置为止,当前值最大的元素的索引、当前最大插值信息(包括最大差值,最大差值对应的左索引,最大差值对应的右索引)等,直到遍历到数组的第一个元素,就找到了数组对应的最大插值以及与其相对应的左索引、右索引。属于一种动态规划的方法。时间复杂度:O(n),空间复杂度O(1)。对应原创 2013-09-30 20:39:59 · 2479 阅读 · 0 评论 -
从外向内的旋转数组输出
题目描述如下图: 解法一:使用一个二维数组存储结果二维数组,然后输出此二维数组。时间复杂度O(n*n),空间复杂度O(n*n),此解法的C++代码如下:#includeusing namespace std;int main(){ int side_long; //矩阵的边长 cout<<"please input the length of ed原创 2013-09-30 15:58:53 · 759 阅读 · 0 评论 -
确定一篇文章中的所有单词是否可以组成一个特定的句子
问题:确定一篇文章中的所有单词是否可以组成一个特定的句子?解决方法:把文章中的所有单词放入的hash_map中,单词是关键词。把句子中的所有单词放入类型的hash_map中,单词是关键词。然后比较每个在句子中出现的单词的出现次数与相应单词在文章中出现次数,若有在句子中出现的单词的出现次数比相应单词在文章中出现次数多的就说明文章中出现的单词不够构成这个句子,否则可以。 以下C++代码可供原创 2013-05-04 20:31:22 · 766 阅读 · 0 评论 -
判断整数数列是不是二元查找树的后序遍历结果
题目:输入一个整数数列,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。 解法:用递归的方法解决。数组最后一个元素肯定是根节点的值,找出左子树(数组左侧所有比根节点小的值)和右子树(数组右侧,除根节点外,所有比根节点大的值),注意不能出现左子树中有元素比根节点大、右子树中有元素比根节点小,然后递归查看左子树和右子树是否为后序遍历的结果。 C++原创 2013-10-08 16:19:53 · 735 阅读 · 0 评论 -
输出以个小于1万亿的正整数的拼音读法
题目:输入一个小于1万亿的正整数,输出这个正整数的读法的拼音表示。如,输入:1234,输出:yiqianerbaisanshisi输入:1234567,输出:yibaiershisanwansiqianwubailiushiqi注意:2不读做liang,而读作er。 下面给出一个粗暴的coding方法:每四位一组,读最高四位后(假如高四位不为空),后跟yi,接着读中间四位(假如原创 2013-10-11 00:11:17 · 1169 阅读 · 0 评论 -
C++设计模式之六--Facade门面模式
转自:http://www.cnblogs.com/wanggary/archive/2011/04/12/2014186.html Facade门面模式,也是比较常用的一种模式,基本上所有软件系统中都会用到。GOF 在《设计模式》一书中给出如下定义:为子系统中的一组接口提供一个一致的界面, Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。简单说转载 2013-11-05 21:40:38 · 645 阅读 · 0 评论 -
设计模式之五--Factory_Method工厂模式
转自:http://www.cnblogs.com/wanggary/archive/2011/04/11/2013033.html 工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情转载 2013-11-05 20:25:44 · 627 阅读 · 0 评论 -
C++设计模式之三--Singleton单例模式
转自:http://www.cnblogs.com/wanggary/archive/2011/04/09/2010876.html 单例模式看起来也蛮简单的,就是在系统中只允许产生这个类的一个实例,既然这么简单,就直接贴代码了。更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com。3.1.解释main(),大臣CEmperor,需要单例的类说明:转载 2013-11-05 20:07:11 · 656 阅读 · 0 评论 -
C++设计模式之四--Multition多例模式
转自:http://www.cnblogs.com/wanggary/archive/2011/04/11/2011966.html 多例模式,这个在GOF的模式设计里没有提到,但在实际工作中确实会用到。更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com。4.1.解释main(),客户略说明:和单例基本一样,是有个数限制的单例。如果对于产生转载 2013-11-05 20:09:18 · 1165 阅读 · 0 评论 -
hash表扩展二
转载自:http://hi.baidu.com/calrincalrin/item/9a48bae6b5e4a2394ddcafc3动态hash思想方法之二======》接动态hash方法之一 动态hash方法之二 线性散列:动态hash常用的另一种方法为线性散列,它能随数据的插入和删除,适当的对hash桶数进行调整,与可扩展散列相比,线性散列不需要存放数据桶指针的专门转载 2013-10-26 19:45:16 · 805 阅读 · 0 评论 -
动态hash表一
转载自:http://hi.baidu.com/calrincalrin/item/dd826f76cffc935d0d0a07c5动态hash方法之一动态hash方法之一本文资料在百度文库有文档,如果觉得麻烦,可以下下来仔细阅读,会花费你一个币!算是对我工作的支持吧,呵呵!链接:本文将介绍三种动态hash方法。 散列是一个非常有用的、非常基础的数据结构,转载 2013-10-26 19:22:45 · 1779 阅读 · 0 评论 -
C语言很难理解的表达式
从北邮人论坛上http://bbs.byr.cn/#!article/Job/1426029看到这个问题,记录下来。某公司笔试的一道题,解释下面几个函数? int (*a())(); int (*b[1])(); int (*c())[1]; -- 解答:这个问题推荐看 C专家编程,总的来说,解析声明式,先从标识符开始,然后依次按照如下的有限转载 2013-10-18 09:56:01 · 732 阅读 · 0 评论 -
输出从n个数中选m个数的所有组合
题目:n个数1,2,...,n,从这n个数中任意选m个数,输出所有不同组合,共有C(n,m)种不同组合。如n=5,m=3,会产生如下输出:5 4 3 5 4 2 5 4 1 5 3 2 5 3 1 5 2 1 4 3 2 4 3 1 4 2 1 3 2 1 解题思路1:采用递归的方法,终止条件是当m==0时,此时输出所有这个组合。否则遍历n,n-1,原创 2013-10-11 22:26:44 · 12468 阅读 · 0 评论 -
C++中不太注意的一些小知识点
1、模板类的容器map使用时需要注意:当用下标操作符[]来查找某个key值是否存在于map中时,若所查找的元素不在map中,查找结束后会在map中插入所查找的key值,此key值对应的value值被初始化成value所属类型的默认值。如下例:map str_count;str_count["aaa"]=2;str_count["bbb"]=3;if(!str_count["ccc"]原创 2013-11-07 20:11:28 · 655 阅读 · 0 评论