返回首页 我的新博客

随笔分类 -  c++

摘要:http://blog.csdn.net/v_july_v/article/details/6543438 阅读全文
posted @ 2011-09-25 13:04 buffer的blogs 阅读(206) 评论(0) 推荐(0) 编辑
摘要:二叉树的遍历:D:访问根结点,L:遍历根结点的左子树,R:遍历根结点的右子树。给定一棵二叉树的前序遍历序列和中序遍历序列可以惟一确定一棵二叉树。二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法是采用队列。深度优先遍历二叉树。1. 中序遍历(LDR)的递归算法:若二叉树为空,则算法结束;否则: 中序遍历根结点的左子树; 访问根结点; 中序遍历根结点的右子树。2. 前序遍历(DLR)的递归算法:若二叉树为空,则算法结束,否则: 访问根结点; 前序遍历根结点的左子树; 前序遍历根结点的右子树。3. 后序遍历(LRD)的递归算法:若二叉树为空,则算法结束,否则: 后序遍历 阅读全文
posted @ 2011-09-19 20:13 buffer的blogs 阅读(783) 评论(0) 推荐(0) 编辑
摘要:定义定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法(Factory Method)使一个类的实例化延迟到其子类。也叫虚构造器(Virtual Constructor)结构理解1.Product是工厂方法生产产品的抽象基类。2.Creator是生产产品的工厂对象抽象基类。Creator提供创建虚方法即工厂方法FactoryMeothod()。FactoryMeothod()由派生类(ConcreteCreator)具体实现,生产对应的具体产品(ConcreteProduct)。3.ConcreteProduct是继承Product的具体产品。4.ConcreteCreator是生 阅读全文
posted @ 2011-09-06 23:05 buffer的blogs 阅读(429) 评论(0) 推荐(0) 编辑
摘要:C++设计模式之Adapter一、功能 将一个类的接口转换成客户希望的另外一个接口,解决两个已有接口之间不匹配的问题。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 二、结构图 (1)class adapter (2)object adapter 三、实现 和其他很多模式一样,学习设计模式的重点是学习每种模式的思 想,而不应拘泥于它的某种具体结构图和实现。因为模式是灵活的,其实现可以是千变万化的,只是所谓万变不离其宗。 在STL中大量运用了Adapter模式,象function adapter、iterator adpter,它们与这里说的adapte... 阅读全文
posted @ 2011-09-06 23:04 buffer的blogs 阅读(283) 评论(0) 推荐(0) 编辑
摘要:本文源自我之前花了2天时间做的一个简单的车牌识别系统。那个项目,时间太紧,样本也有限,达不到对方要求的95%识别率(主要对于车牌来说,D,0,O,I,1等等太相似了。然后,汉字的识别难度也不小),因此未被对方接受。在此放出,同时描述一下思路及算法。全文分两部分,第一部分讲车牌识别及普通验证码这一类识别的普通方法,第二部分讲对类似QQ验证码,Gmail验证码这一类变态验证码的识别方法和思路。一、车牌/验证码识别的普通方法车牌、验证码识别的普通方法为:(1)将图片灰度化与二值化(2)去噪,然后切割成一个一个的字符(3)提取每一个字符的特征,生成特征矢量或特征矩阵(4)分类与学习。将特征矢量或特征矩 阅读全文
posted @ 2011-08-06 09:58 buffer的blogs 阅读(484) 评论(0) 推荐(0) 编辑
摘要:很多人都觉得学习C++是特别困难的事情。C++学习是比较复杂的:它的内存分配、指针、以及面向对象思想的实现等等,确实需要一定的技术积累。我们将以专题的形式,为大家逐一剖析c++的技术重点和难点。 本专题讨论的就是内存分配。学习c++如果不了解内存分配是一件非常可悲的事情。而且,可以这样讲,一个C++程序员无法掌握内存、无法了解内存,是不能够成为一个合格的C++程序员的。 一、内存基本构成 可编程内... 阅读全文
posted @ 2009-12-08 15:57 buffer的blogs 阅读(772) 评论(0) 推荐(0) 编辑
摘要:1.插入排序由N-1趟排序组成,对于p=1到p=N-1趟,插入排序保证从位置0到位置p上的元素为已排序状态。时间复杂度:O(N^2)代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--voidInsertionSort(ElementTypeA[],i... 阅读全文
posted @ 2009-12-08 11:45 buffer的blogs 阅读(382) 评论(1) 推荐(0) 编辑
摘要:1. STL有6种序列容器类型 (1)vector 它提供对元素的随即访问,在尾部添加和删除元素的时间是固定的,在头部或中部插入和删除元素的复杂度为线性时间。 (2)deque 在文件中声明。 是双端队列,支持随即访问。从deque的开始与末尾位置插入和删除元素的时间是固定的。 尽管vector和deque都提供对元素的随机访问和在序列中部执行线性时间的插入和删除操作,但vector容器执行这些操... 阅读全文
posted @ 2009-12-08 11:37 buffer的blogs 阅读(271) 评论(0) 推荐(0) 编辑
摘要:泛型算法通则  所有算法的前两个参数都是一对iterators:[first,last),用来指出容器内一个范围内的元素。  每个算法的声明中,都表现出它所需要的最低层次的iterator类型。  大部分算法都可以用functioin object 来更改准则。function object又称functor。 阅读全文
posted @ 2009-12-07 21:50 buffer的blogs 阅读(293) 评论(0) 推荐(0) 编辑
摘要:简单的可以理解为: heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。 stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。 预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构... 阅读全文
posted @ 2009-12-07 14:57 buffer的blogs 阅读(514) 评论(0) 推荐(0) 编辑
摘要:set和map一样是一个用平衡二叉树写的模板,map可以有两个或多这个只配对,而set只有一个,当你只存放一个元素的时候,可以考虑用set,他的有点和map一样,查找很快。呵呵。因为我只用到set的一些简单的功能,所以也只学了一点点他的用法。更深入的用法还必须继续加油学习。呵呵。对了,如果要查MSDN中关于set的用法的话,关键字用set class就可以了。只用set貌似还要找半天。虽然简单,还... 阅读全文
posted @ 2009-12-04 14:44 buffer的blogs 阅读(920) 评论(0) 推荐(0) 编辑
摘要:Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有... 阅读全文
posted @ 2009-12-04 14:41 buffer的blogs 阅读(381) 评论(0) 推荐(0) 编辑
摘要:C++类库介绍 再次体现了C++保持核心语言的效率同时大力发展应用库的发展趋势!!在C++中,库的地位是非常高的。C++之父 BJARNESTROUSTRUP先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重量级的都有。不少都是让人眼界大开,亦或是望而生叹的思维杰作。由于库的数量非常庞大,而且限于笔者水平,其中很多并不了解。... 阅读全文
posted @ 2009-12-03 20:48 buffer的blogs 阅读(517) 评论(0) 推荐(0) 编辑
摘要:单例模式也称为单件模式、单子模式。使用单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出等。单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但这样的代码显得很不优雅。《设计模式》一书中给出了一种很不错的实现,定义一个单例类,使用类的私有静态指针变量指向类的唯一实例,并用一个公有静态方法... 阅读全文
posted @ 2009-11-26 17:11 buffer的blogs 阅读(663) 评论(0) 推荐(0) 编辑
摘要:采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和... 阅读全文
posted @ 2009-10-17 10:54 buffer的blogs 阅读(217) 评论(0) 推荐(0) 编辑
摘要://search.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include"LinkTable.h"#defineMAX_KEY500//------------------------------数组实现部分----------------------------------/**//*无序数组顺序... 阅读全文
posted @ 2009-10-10 13:57 buffer的blogs 阅读(513) 评论(2) 推荐(0) 编辑
摘要:联合(union)在C/C++里面见得并不多,但是在一些对内存要求特别严格的地方,联合又是频繁出现,那么究竟什么是联合、怎么去用、有什么需要注意的地方呢?就这些问题,我试着做一些简单的回答,里面肯定还有不当的地方,欢迎指出! 1、什么是联合? “联合”是一种特殊的类,也是一种构造类型的数据结构。在一个“联合”内可以定义多种不同的数据类型, 一个被说明... 阅读全文
posted @ 2009-10-08 21:18 buffer的blogs 阅读(471) 评论(0) 推荐(0) 编辑
摘要:全局变量、局部变量、静态全局变量、静态局部变量的区别C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。从作用域看:全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。静态局部变量具有局... 阅读全文
posted @ 2009-10-05 13:48 buffer的blogs 阅读(528) 评论(0) 推荐(0) 编辑
摘要:如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。通过查询资料发现,其错误是普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递一个指向自身的指针给其成员函数从而实现程序函数可以访问C++的数据成员。这也可以理解为什么C++类的多个实例可以共享成员函数但是确有不同的数据成员。由于this指针的作用,使得将一个CAL... 阅读全文
posted @ 2009-10-05 13:25 buffer的blogs 阅读(448) 评论(0) 推荐(0) 编辑
摘要:结构与类很相似,都表示可以包含数据成员和函数成员的数据结构。与类不同的是,结构是值类型并且不需要堆分配。结构类型的变量直接包含结构的数据,而类类型的变量包含对数据的引用(该变量称为对象)。 struct 类型适合表示如点、矩形和颜色这样的轻量对象。尽管可能将一个点表示为类,但结构在某些方案中更有效。在一些情况下,结构的成本较低。例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分... 阅读全文
posted @ 2009-10-04 00:06 buffer的blogs 阅读(289) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示