
面向对象的程序设计
文章平均质量分 79
JasonLiu1919
微信公众号《小窗幽记机器学习》。却顾所来径,苍苍横翠微。个人微信号:onepieceand
展开
-
C++学习笔记之继承
1、父类中的私有成员,被子类公有继承之后,父类的私有成员在子类中被隐藏,是不可见的,所以无法在子类中的成员函数中直接访问父类的私有成员数据,当然更无法通过实例化对象来访问了。父类中的成员属性,通过公有继承方式被子类继承:private--》无法访问protected--》protectedpublic--》public父类中的成员属性,通过私有继承方式被子类继承:pri原创 2015-10-06 18:23:28 · 757 阅读 · 0 评论 -
遗传算法与C++实现
遗传算法,核心是达尔文优胜劣汰适者生存的进化理论的思想。我们都知道一个种群,通过长时间的繁衍,种群的基因会向着更适应环境的趋势进化,牛B个体的基因被保留,后代越来越多,适应能力低个体的基因被淘汰,后代越来越少。经过几代的繁衍进化,留下来的少数个体,就是相对能力最强的个体了。那么在解决一些问题的时候,我们能不能学习这样的思想,比如先随机创造很多很多的解,然后找一个靠谱的评价体系,去筛原创 2015-01-06 19:47:17 · 62234 阅读 · 12 评论 -
遗传算法C++例子
遗传算法的具体已在前面的文章进行阐述,在此补充一个例子进行说明。求函数极大值F(X) = X[1]^2 - X[1]*X[2] + X[3]其中0 0 -2 正解为[5,0,2]。txt文本中的内容截图如下:所表示的是各个变量的取值范围。第一列为所取的最小值,第二列为所取的最大值;每一行对应一个变量。代码如下所示:# include #in原创 2015-01-07 17:11:23 · 7953 阅读 · 0 评论 -
洗牌算法
给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里原创 2014-11-06 15:35:41 · 1122 阅读 · 0 评论 -
华为面试题:用递归的方法判断整数组a[N]是不是升序排列
int is_ascending ( int a [],int length){ if (length ==1) return 1; if (a [ length-2]> a [length -1]) { return 0原创 2014-11-06 11:17:40 · 1127 阅读 · 0 评论 -
ITK学习笔记-1:图像的读写
1、常用的医学图像格式2、ITK的数据处理管道结构 ITK中的数据处理对象分为3种类型 1)Source类型对象的输出为数据对象,包括各种图像文件读取类 2)Filter类型对象以一个或多个数据对象作为输入,然后输出一个或多个数据对象,包括数据处理算法类 3)Mapper类型对象是管道处理的最后一步,它将最终处理结果存到硬盘3、ITK图像原创 2014-11-25 19:44:10 · 7035 阅读 · 3 评论 -
C++学习笔记-函数数组传参
问题描述:定义一个函数原创 2014-11-04 20:20:04 · 896 阅读 · 0 评论 -
C++学习笔记-数组引用
1、数组将阶原创 2014-11-04 20:37:25 · 754 阅读 · 0 评论 -
编程之美读书笔记-第2章数字之谜
给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有”1“的个数原创 2014-08-26 14:53:56 · 722 阅读 · 0 评论 -
华为上机--重复字符过滤
题目:请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果为“abcde”。 示例 输入:“deefd” 输出:“def” 输入:“afafafaf” 输出:“af” 输入:“pppppppp” 输出:“p”原创 2014-07-12 22:00:45 · 928 阅读 · 0 评论 -
数据结构与算法-表达式转为后缀式
例如:Exp = a ´ b + (c - d / e) ´ f其前缀式:+ ´ a b ´ - c / d e f前缀式(包含了括号信息)的运算规则为:连续出现的两个操作数和在它们之前且紧靠它们的运算符构成一个最小表达式;唯一地确定了运算顺序。先找操作数,再找运算符。其后缀式:a b ´ c d e / - f ´ +后缀式运算符在式中出现的顺序恰原创 2014-08-04 20:11:24 · 1462 阅读 · 0 评论 -
笔试系列-1-华为机试第二题
2014年华为机试题目2:华为2014校园招聘的机试题目和2013年的完全一样。题目描述(60分):通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。要求实现函数:void stringFilter(const char *pInputSt原创 2014-02-21 20:42:55 · 1002 阅读 · 0 评论 -
C++基础学习系列-1-字符串的读取和显示
问题描述:对于c++,在对键盘输入的字符串进行显示时候,需要注意cin、cout和get等的使用不同上。1、cin是的输入判断是空格。cin遇“空格”、“TAB”、“回车”都结束的。以下面为例:int main(){ const int ArSize=20; char name[ArSize]; char dessert[ArSize]; cout原创 2014-02-20 21:12:31 · 1233 阅读 · 0 评论 -
scanf的使用说明
scanf()函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。其调用格式为: scanf("",);scanf()函数返回成功赋值的数据项数,出错时则返回EOF。格式化字符串包括以下三类不同的字符;1、 格式化说明符:格式字符 说明%a 读入一个浮点值(仅C99有效) %A 同上原创 2013-10-23 20:01:40 · 2012 阅读 · 0 评论 -
VTK学习笔记-2-TIFF图像数据的重切片
玩了半天,终于可以实现对于TIFF图像的三维重切片。首先需要注意的是vtkTIFFReader并不是支持所有的TIFF压缩格式,比如LZ压缩的就不支持。个人觉得,VTK在DICOM格式上具有更强的操作性,貌似其存在便是针对了DICOM格式而进行的,至于其他格式的数据,有点是后期为了迎合兼容性而做出的各种的添加。再者,VTK的资料是有限有限的,除了那些Examples。。。那个用户手册是要钱的,79原创 2013-04-06 13:56:34 · 5480 阅读 · 0 评论 -
关于inline的说明
在函数前面加上inline关键字来声明,使得该函数为内联函数,则c++编译器会将函数体的代码直接插入到程序中调用该函数的地方。其与普通函数的区别在于前者是将代码插入到程序中,这也就使得程序的定义(不仅仅是声明)必须出现在它使用之前,否则编译器就不能插入代码。对于普通函数来说,编译器遇到每个函数的调用,才生成一个该函数的跳转。使用内联函数时为了更快速的运行程序,它是不需要调用函数的指令(如处理寄存器原创 2013-03-01 15:07:13 · 833 阅读 · 0 评论 -
关于int main(int argc,char* argv[])的说明
在最近学习中遇到 int main(int argc,char* argv[]),以为就是简单的参数应用了,在网上找了下资料,当时并没有马上就理解,后来在实践中发摸索出来。下面的一篇文章讲的很好很详细,大家可以根据自己的情况看看,资源充分利用。http://blog.youkuaiyun.com/lambol_8309/article/details/4524964 int main(int ar原创 2013-02-28 11:21:10 · 676 阅读 · 0 评论 -
关于Libtiff库的使用(zz)
(1)下载tiff库文件http://www.libtiff.org/无法下载,镜像下载处http://libtiff.maptools.org/dl/可以,目前版本3.8.2可以处理5.0或6.0标准的TIFF文件(2)第1次编译tiff库按说明(http://www.libtiff.org/build.html#PC)需要使用命令行nmake /f makefile.v转载 2013-02-28 17:19:41 · 18715 阅读 · 0 评论 -
C++实现生成均匀分布的数字
问题描述:生成[a,b]之间均匀分布的数字!原创 2015-01-06 21:10:24 · 11053 阅读 · 0 评论 -
ITK学习笔记:图像FFT
就不磨叽了,直接上代码。#include "itkImageFileReader.h"#include "itkImageFileWriter.h"#include "itkWrapPadImageFilter.h"#include "itkForwardFFTImageFilter.h"#include "itkComplexToModulusImageFilter.h"#incl原创 2014-12-03 17:03:01 · 3009 阅读 · 0 评论 -
C++学习笔记之类模板
定义一个矩形类模板该模板中含有计算矩形面积和周长的成员函数数据成员为矩形的长和宽。代码:#include using namespace std;/** * 定义一个矩形类模板Rect * 成员函数:calcArea()、calePerimeter() * 数据成员:m_length、m_height */templateclass Rect{pu原创 2015-10-02 19:36:07 · 621 阅读 · 0 评论 -
C++学习笔记之RTTI(运行时类型识别)
当同一个父类被多个不同的子类进行继承,在子类中又定义了各自的成员函数时候,如何一个全局函数调用(为了实现能够调用子类,其输入参数为父类指针,即父类指针指向子类对象)。在该全局函数中实现通过对传入对象类型的判断,从而根据不同类型做出不同的反应,即调用不同的成员函数。Flyable *p =new Bird();coutcout代码:原创 2015-10-03 17:22:30 · 1047 阅读 · 0 评论 -
C++学习笔记之运算符重载例子
本文重载前置--,后置--和运算符+。代码如下:#include using namespace std;/** * 定义Coordinate类 * 数据成员:m_iX,m_iY * 成员函数:构造函数 * 重载--运算符,重载+运算符 */class Coordinate{public: Coordinate(int x, int y) { m_i原创 2015-10-02 18:31:12 · 3514 阅读 · 0 评论 -
C语言正则表达式的匹配问题
题目:C语言正则表达式详解 regcomp() regexec() regfree()详解。背景:标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库,许多Linux发行版本都带有这个函数库。实现步骤:C语言中使用正则表达式一般原创 2015-08-18 21:48:48 · 8889 阅读 · 0 评论 -
华为OJ:字符逆序和单词翻转
将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。 如:输入“I am a student”,输出“tneduts a ma I”。 输入参数:inputString:输入的字符串 返回值:输出转换好的逆序字符串需要注意的是,该题和单词翻转之间的区别!单词翻转输入“I am a student.”,则输出“student.a am I”。1:字符逆序原创 2015-08-05 21:09:44 · 2436 阅读 · 0 评论 -
华为OJ:统计每个月兔子的总数
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? /** * 统计出兔子总数。 * * @param monthCount 第几个月 * @return 兔子总数 */ public static int getTotalCou原创 2015-07-21 21:29:12 · 1584 阅读 · 0 评论 -
C++学习笔记:volatile的作用
1、volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。用volatile关键字声明的变量i每一次被访问时,执行部件都会从i相应的内存单元中取出i的值。没有用volatile关键字声明的变量i在被访问的时候可能直接原创 2015-08-28 12:12:06 · 835 阅读 · 0 评论 -
华为OJ:输出单向链表中倒数第k个结点
#include using namespace std;typedef struct node{ int a;//编号 int b;//测量值 struct node *next;}node,*linklist;//为了得到倒数第k个结点,很自然的想法是先走到链表的尾端,再从尾端回溯k步。//可是输入的是单向链表,只有从前往后的指针而没有从后往前的指针。//在遍历时维持两原创 2015-07-21 15:23:05 · 2332 阅读 · 0 评论 -
华为OJ:线性插值
信号测量的结果包括测量编号和测量值。存在信号测量结果丢弃及测量结果重复的情况。 1.测量编号不连续的情况,认为是测量结果丢弃。对应测量结果丢弃的情况,需要进行插值操作以更准确的评估信号。 采用简化的一阶插值方法,由丢失的测量结果两头的测量值算出两者中间的丢失值。 假设第M个测量结果的测量值为A,第N个测量结果的测量值为B。则需要进行(N-M-1)个测量结果的插值处理。进行一阶线性插原创 2015-07-19 18:01:39 · 1884 阅读 · 0 评论 -
两个字符串合并、排序和转换
按照指定规则对输入的字符串进行处理。详细描述:将输入的两个字符串合并。对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。对排训后的字符串进行操作,如果字符为‘0’——‘9’或者‘A’——‘F’或者‘a’——‘f’,则对他们所代表的16进制的数进行BIT倒序的操作,并转换为相应的大写字符。如字符原创 2015-07-11 16:59:46 · 6064 阅读 · 0 评论 -
ITK配准:基于DeformationFieldTransform的配准
本文采用DeformationFieldTransform进行图像的配准。注意在ITKv4中 DeformationFieldTransform被命名为 DisplacementFieldTransform。1、DeformationFieldTransform提供一个进行局部、稠密和高纬度的变换场,也称为位移场。该位移场存储着向量的 移位,向量的维度记为N。在给定 的输入点上面增加一原创 2015-01-04 19:48:51 · 3388 阅读 · 0 评论 -
基于FFTW的FFT和IFFT
1:先进行FFT变换,再将图像进行逆变换,并对比两者的结果。#include #include "fftw3.h"#include #include "itkImageFileReader.h"#include "itkImageFileWriter.h"#include "itkWrapPadImageFilter.h"#include "itkForwardFFTImageFi原创 2014-12-12 10:28:20 · 9217 阅读 · 0 评论 -
VS2008下配置FFTW(64bit)
1:当然是下载库。从网址http://www.fftw.org/install/windows.html上获得FFTW的windows dll预编译版本2:解压缩文件,打开VS2008的命令行窗口,如下图所示。再切换到FFTW的解包目录下。3:生成引导库文件(.lib)。在调用动态库编译工程时,需要引导库lib文件,可以通过lib.exe(VS环境中已经附带该工具无需下载)将.def文原创 2014-12-09 20:34:47 · 2898 阅读 · 0 评论 -
ITK配准实例
ITK配准需要的成分有:图像(包括参考图像和待配准图像)、转换函数、度量、校对机和优化器。上述这些成分在配准过程中都需要被实例化。第一、成分类型定义1、对于图像类型定义:const unsigned int Dimension = 2; typedef float PixelType; 输入数据的类型通过下面几行表达: typedef itk::Image FixedI原创 2014-12-24 10:12:34 · 5216 阅读 · 1 评论 -
基于动态规划的矩阵连乘最优方法
问题描述:在科学计算中经常要计算矩阵的乘积。矩阵A和B可乘的条件是矩阵A的列数等于矩阵B的行数。若A是一个p×q的矩阵,B是一个q×r的矩阵,则其乘积C=AB是一个p×r的矩阵。其标准计算公式为:由该公式知计算C=AB总共需要pqr次的数乘。 为了说明在计算矩阵连乘积时加括号方式对整个计算量的影响,我们来看一个计算3个矩阵{A1,A2,A3}的连乘积的例子。设这3个矩阵的维数分别为10原创 2015-01-12 19:35:54 · 13162 阅读 · 5 评论 -
c++必知必会-3
条款5:引用是别名,而非指针引用与指针的区别:1、不存在空引用;2、所有引用都要初始化3、一个引用永远指向用来对其初始化的那个对象。注明:一般引用用在函数形参上,还给它加上一个const,其他的地方么,我一般使用指针。一些编译器可以捕捉到那些明显的创建空引用的尝试:Employee &anEmployee = *static_cast(0); // 错误! 然而,编原创 2013-02-24 16:28:43 · 545 阅读 · 0 评论 -
c++必知必会-2
2、多态。多态类型就是带有虚函数的类类型。多态对象则是不仅有一种类型的对象,而“多态基类”则是一个为满足多态对象的使用需求而设计的基类。一个多态类型,从基类继承的最重要的东西就是它们的接口,而不是它们的实现。事实上,一个基类仅仅由接口组成不但常见,而且通常是我们所希望的【这话,并不是很了解。例子呢?】一个多态基类可以理解为一份契约。这一基类对其接口的用户做了某些承诺【语法承诺,即特定的成员函数原创 2013-02-24 14:54:24 · 502 阅读 · 0 评论 -
面向对象的程序设计学习笔记-15-函数的传值和传地址
/*对象指针和对象引用的应用.函数传值调用和传地址的调用*/#includeusing namespace std;class m{int x,y;public:m(){x=0,y=0;};m(int i,int j){x=i,y=j;};void copy(m *pm);//使用指针void copy(m &pm);//使用引用void set原创 2013-01-11 11:29:40 · 582 阅读 · 0 评论 -
面向对象的程序设计学习笔记-默认的构造函数
/*若一个类不提供构造函数,则c++提供一个什么都不做的(函数体为空)的默认构造函数来创建对象,而不做任何初始化工作*/#includeusing namespace std;class point{public:point(){};//默认的构造函数void set_point(int a,int b);int read_x(){return x;}原创 2013-01-07 21:33:13 · 452 阅读 · 0 评论 -
面向对象的程序设计学习笔记-构造函数和析构函数
/*析构函数。在删除对象时执行一些清理任务,例如把该对象从注册表中删除并释放对象所占用的内存空间。编译系统自动调用构造函数的次序和调用析构函数的次序是相反的。*/#includeusing namespace std;class counter{public:counter(int id);void increment();void decremen原创 2013-01-07 20:38:01 · 728 阅读 · 0 评论