自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

图像处理的专栏

运用常用函数实现对图像处理

  • 博客(94)
  • 资源 (1)
  • 收藏
  • 关注

原创 单链表

前言顺序表是用一组地址连续的存储单元来保存数据的,所以它具有随机存取的特点。即查找快速,但是做插入或删除动作是,需要移动大量元素,效率较低。 链表是线性表的链式存储结构,它相比于顺序表,在插入和删除元素时,效率要高很多。 每个数据单元有两部分组成,一个是数据域,存储数据值;另一个是指针域,指向下一个数据单元。这样的数据单元叫做结点。 链表可分为单链表、双链表、循环链表。基本算法创建链表 顺

2015-08-05 15:37:04 991

原创 算法复杂度

1 前言算法时间复杂度,也就是算法的时间量度,就是在计算机上执行耗时。个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。在应用中用O表示。 一个算法是由控制结构和原操作构成的,其执行的时间取决于二者的综合效果。为了便于比较同一问题的不同算法,通常把算法中基本操作重复执行的次数(频度)作为算法的时间复杂度。时间复杂度计算计算复杂度原则 1.去掉运行时间中的

2015-08-04 19:02:41 3447 1

原创 数据结构及算法综述

1 数据 序号 名称 定义 举例 1 数据 对客观事物的符号表示,在计算机中就是能被识别的符号集合 数值、图片、视频、音频等形式 2 数据项 数据中具有独立含义,不可分割的最小数据单位,客观实体一种特征数据表示 成员变量 3 数据元素 过个相关数据项的集,一个客观实体多种实体特征的数据描述,计算机加工的进本单位 类似结构体抽象的数据类型

2015-08-04 16:03:29 1046

原创 顺序表

前言顺序表是在计算机内存中以数组的形式保存的线性表,是指使用一组连续分配存储单元有序的存储数据元素的线性结构。 顺序表还有后面讲的单链表、循环链表、双链表都是链表,根本区别是在内存中存储数据的方式不同,每种方式都有优劣点,这也根据应用场景的不同,决定用什么方式存储数据。基本算法在线性表中算法操作中,异常判断很重要,包括链表是否为空,插入位置是否正确等等。 - 插入数据元素 在顺序表中第n个位

2015-08-04 15:12:23 653

原创 c++文件流

前言文件流能够从文件系统中读取数据并向文件中写入数据。 文件输入流适用于读取配置数据、读取保存的文件以及批处理基于文件的数据等任务。Fprintf,fwrite,fputs 文件输出流适用于保存状态数据和提供输出等任务。Fscanf/fread/fgets.文件打开需要在文件中包含fstream   file1.open(“c:config.sys”,ios::binary|ios::in,

2015-07-31 17:28:45 1120

原创 c++ 控制台流和字符串流

前言上一章节简单介绍c++中关于流的概念,这两章节将重点讲解如何使用,本章讲解控制台流和字符串流。控制台输出流输出流定义在头文件中,使用输出流最简单的方法就是 使用<<运算符。通过你<<可以输出c++基本类型。包括int、指针、double、字符。int ncount = 7;cout<<ncount<<endl;char *ch = "teststream";cout<<ch<<endl;/

2015-07-30 21:33:51 1377

原创 c++ 流基本概念

前言在程序经常实现数据的输入和输出,c++通过一种称为流(stream)的机制提供了更为精良的输入和输出方法。流是一种灵活且面向对象的I/o方法。 根据操作对象不同分为文件流、字符串流、控制台流。控制台流我们所熟悉的输入输出操作分别是由istream(输入流)和ostream(输出流)这两个类提供的,为了允许双向的输入/输出,由istream和ostream派生出了iostream类。 类的继承

2015-07-30 19:59:38 651

原创 友元函数、类和运算符重载

友元函数介绍在程序设计中,加入类A想访问类B中的私有成员和私有函数时,为了保持程序的封装性,又让其有共享性,就用到了友元类和友元函数。友元类class A{ friend class B ;public : void Display() { cout << x << endl ; } ;private : int x ;} ;//上面在类A声明了它的友元类是B

2015-07-01 21:17:57 941

转载 c++中的引用

引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。一、引用简介  引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。  引用的声明方法:类型标识符 &引用名=目标变量名;  【例1】:int a; int &ra=a; //定义引用ra,它是变量a的引用  说明:  (1)&在此不是求地址运算,而是起标识作用。  (2)

2015-06-26 11:14:11 567

原创 c++重点知识点

- const加强在变量前加const,说明变量是常量只读属性。假如用指针去修改const常量会用什么结果。上例子://a 是一个只读的常量,按照理论应该不能被修改 const int a = 10;//内存中为a分配地址,赋值 printf("sssss:&a:%d", &a); int *p = NULL; int *p2 = NULL; //当你对a取地

2015-06-26 11:00:18 846

原创 指针和结构体

结构体的认识结构体的定义 将不同数据类型的数据对象组织在一起。结构体在c中和C++不同 在C中的结构体只能自定义数据类型,结构体中不允许有函数,而C++中的结构体可以加入成员函数。C中的结构体只涉及到数据结构,而不涉及到算法,也就是说在C中数据结构和算法是分离的,而到C++中一类或者一个结构体可以包含函数(这个函数在C++我们通常中称为成员函数),C++中的结构体和类体现了数据结构和算法的结

2015-06-22 16:26:50 1244

原创 指针和数组

数组的本质上一章节讲过了指针,那么数组是什么,数据类型是什么,为什么数组做函数参数的时候会退化为指针,怎么理解。 先看一段代码:int i,*p,a[] = {3,4,5,6,79};p= a;for (i=0;i9;i++){ printf("%d\n",a[i])//通过数组名访问元素 printf("%d\n",*a+i)//也可以这样 printf(

2015-06-22 12:23:00 780

原创 指针系列——认识指针

综述指针在c++学习中一直是难点和重点,由于在项目中指针应用比较灵活,所以指针所引发的问题比较多,最近针对指针进行重点学习。有人说,掌握指针,也就掌握c语言的精髓。c++中当然也有指针,同时还包括继承、多态等等。内存四区没有内存,就没有指针,在理解指针的开始阶段,先重点讲解内存五区。 如上图所示:一般下理解内存分为栈、堆、常量区、代码区、全局区。 栈:程序中局部变量、参数包括形参、数组、指针

2015-06-17 19:58:52 1014

转载 组合模式

一、引言在软件开发过程中,我们经常会遇到处理简单对象和复合对象的情况,例如对操作系统中目录的处理就是这样的一个例子,因为目录可以包括单独的文件,也可以包括文件夹,文件夹又是由文件组成的,由于简单对象和复合对象在功能上区别,导致在操作过程中必须区分简单对象和复合对象,这样就会导致客户调用带来不必要的麻烦,然而作为客户,它们希望能够始终一致地对待简单对象和复合对象。然而组合模式就是解决这样的问题。下面让

2015-05-26 17:23:09 614

原创 迭代器模式

引言在面向对象编程中,经常遇到集合对象,在对其操作时重点工作有:1、集合内部数据的存储,2、集合内部数据的查询。在面向对象设计原则中有一条是单一职责原则,所以要分离这些职责,用不同的类承担不同的责任。迭代器就是针对集合产生的,用来遍历集合元素的职责。迭代器模式定义 提供一种顺序访问一个聚合对象中各个元素,而又不暴漏该对象集合内部数据结构的方法。 架构图 如上图所示,在迭代器模式中,迭代器

2015-05-26 16:11:01 617

原创 模板模式

引言在C++有模板函数,在生活中有“简历模板”,“论文模板”等等,在程序设计中,也会为一个产品的生成制定一系列的算法流程,这就是模板模式的来历。定义 在一个抽象类中定义一个操作中的算法骨架(简历模板),而将一些步骤延迟到子类中去实现(自己简历内容)。模板方法使得子类可以不改变一个算法的结构前提下,重新定义算法的某些特定步骤,模板方法模式把不变行为搬到超类中,从而去除了子类中的重复代码。架构图

2015-05-25 17:20:36 629

原创 适配器模式

- 一、引言在软件系统中,为针对应用环境的变化,将“一些现存的对象”放在新的环境中应用,能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口?这就是Adapter 模式。 - 二、适配器的介绍2.1定义 配器模式——把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作。适配器模式有类的适配器模式和对象的适配器模式两种形式 2.2程

2015-05-25 14:32:35 498

原创 命令模式

- 一、引言在软件系统中,往往“行为请求者”和“行为实现者”通常呈现一种紧耦合。比如对行为进行“记录、撤销”等处理,命令模式就是提供一种封装将两者进行解耦。 命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。[GOF 《设计模式》]结构图 从命令模式的结构图可以看出,它涉及到五个角色,它们分别是:客户角色:发出一

2015-05-25 11:32:08 460

原创 抽象工厂模式

一、引言在软件系统中在动态创建对象基础上,往往由于需求的变化,会存在更多系列对象的创建工作。为此,绕过常规的对象创建(new),提供封装机制来避免客户和这种多系列具体对象的创建工作,紧密合作。这就是抽象工厂模式。 比如说:工厂模式中每个具体类只完成一个实例的创建,但是现实中一个工厂生产很多产品,而不是单个产品,为了生产一系列产品,便产生了抽象工厂。 抽象工厂是提供一个创建一系列相关或相互依赖对象

2015-05-24 19:22:04 556

原创 工厂模式

一、引言在程序开发中经常会有对象的创建,当需要创建一个对象时,通过new进行创建。当程序功能进行升级时,添加新的对象时,则需要修改代码进行再一次new对象,这样导致代码维护量特别大。这节通过讲解简单工厂、抽象工厂模式,来解决这个问题。 工厂模式是一种封装机制来隔离出“这个易变对象”的变化,从而保持系统中“其它依赖该对象的对象”不随着需求的改变而改变。 工厂模式是定义一个用户创建对象的接口,让子类

2015-05-22 18:28:15 519

原创 装饰者模式

1. 引言在软件系统中如果通过继承来扩展对象的功能,但是由于继承是静态特质,使得这种扩展缺乏灵活性。在软件开发时,需要开发一个组件,其组件由其他零件构成,比如装修,美化手机等等。如果利用继承的话,就可能生成很多子类,比如西式装修子类、杭州风格装修子类等等,为了解决这个问题,提供了装饰者模式动态给对象添加额外的职责。 定义:以对客户透明的方式对对象动态添加额外的责任,装饰者模式相比生成子类可以更灵活

2015-05-22 16:46:23 744 1

原创 NET设计模式-单例模式(Singleton Pattern)

1. 概述Singleton Pattren 要求一个类有且仅有一个实例,并且提供一个全局变量。这个创建的对象是独一无二的,在这个单独对象实例中,集中所创建类的所有属性和方法。 在创建一个单例,何时需要,这是程序设计的关键。从定义上可知这个类供全局调用,产品(程序)都可调用,所有是个全局静态变量,一般是不允许有派生类的。比如,火车的票数及票种,必须全局变量,这个往往是为了防止多线程调用时,导致问题

2015-05-20 21:36:08 821

原创 观察者模式

一 在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。情景设计设计一个应用,有三种布告板,分别显示目前的状况、气象统计及简单的预报。当WeatherOb

2015-05-14 21:13:02 595

转载 UML的9种图例解析

UML的9中图例模式

2015-05-14 11:37:00 599

原创 设计模式之旅-策略者模式(组合模式)

序言情景设计设计一款模拟鸭子的游戏,游戏中出现各种鸭子,一边游泳戏水,一边呱呱叫。所用的鸭子会呱呱叫,也会游泳,所以基类负责实现。但是每一款鸭子外观不一样,所以这是抽象行为。由子类实现。前期设计及思路 根据情景的设计,首先我们想到这是一些列的鸭子,便会想到利用继承的手段,进行解决。其UML图型为: 后续设计:需要让有的鸭子飞,有的鸭子不能飞。后续设计 问题: 1、在调用中是通过抽象类

2015-05-14 11:32:52 525

转载 Mark博客使用指导

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2015-05-14 10:53:23 401

原创 c#基础语言编程-程序集和反射

程序集 什么是程序集?1.程序集(assembly)是一个及一个以上托管模块,以及一些资源文件的逻辑组合。2.程序集是组件复用,以及实施安全策略和版本策略的最小单位。3.程序集是包含一个或者多个类型定义文件和资源文件的集合。在程序集包含的所有文件中,有一个文件用于保存清单。(清单是元数据部分中一组数据表的集合,其中包含了程序集中一部分文件的名称,描述了程序集的版本,语言文化,发布者,共有导出

2015-04-01 12:00:44 819

原创 c#基础语言编程-正则表达式应用

引言 在不同语言中虽正则表达式一样,但应用函数还是有所区别,在c#语言中使用Regex。 可以通过以下两种方式之一使用正则表达式引擎:通过调用 Regex 类的静态方法。 方法参数包含输入字符串和正则表达式模式。 正则表达式引擎会缓存静态方法调用中使用的正则表达式,这样一来,重复调用使用同一正则表达式的静态正则表达式方法将提供相对良好的性能。通过实例化 Regex 对象,采用的方式是将一个正

2015-03-27 11:25:10 471

原创 c#基础语言编程-正则表达式基础

引言 正则表达式是一种用高度抽象的字符串来描述字符串特征,进而实现对字符串的匹配、提取、替换等等。正则表达式(以下简称正则,Regex)通常不独立存在,各种编程语言和工具作为宿主语言提供对正则的支持,并根据自身语言的特点,进行一定的剪裁或扩展。元字符 正则表达式是由一种表示特殊含义的元字符和字符组成的。元字符可以是一个字符,如^,也可以是一个字符序列,如“\w”。1、[]:字符组可以匹配[

2015-03-27 09:54:50 455

原创 c#基础语言编程-序列化

引言程序员在编写应用程序的时候往往要将程序的某些数据存储在内存中,然后将其写入某个文件或是将它传输到网络中的另一台计算机上以实现通讯。这个将程序数据转化成能被存储并传输的格式的过程被称为”序列化”(Serialization),而它的逆过程则可被称为”反序列化”(Deserialization)。通俗上讲,假如程序在运行的时候,内存中有一个对象,如果你想把这个对象的某些信息或者所有信息保存在本地,下

2015-03-25 17:27:46 540

原创 c#基础语言编程-文件流操作

引言在System.IO 命名空间下提供了一系列的类,我们可以通过相应的类进行文件、目录、数据流的操作。 1、File类:提供用于创建、复制、删除、移动和打开文件的静态方法。File类 2、FileInfo类:提供创建、复制、删除、移动和打开文件的属性和实例方法。FileInfo类 3、FileStream类:主要用于读取磁盘上的文件或者向磁盘文件写入信息。有时,我们需要将程序中的一些数据存储

2015-03-25 16:36:54 1170

原创 c#基础语言编程-编码

字符编码是计算机技术的基础理论,其字符编码有ASCII码、UTF-8、还有就是GB2312,当然这是在中国常用的。1、ASCII码在计算机内部所有的信息都是以二进制字符进行存储。用每个二进制位中的0和1,八个二进制就可以组合256种状态,成为一个字节。意味着一个字节可以用来表示256种状态。 在计算机开始普及阶段,美国制定一套字符编码,对英语字符与二进制位关系进行统一规定,成为ASCII码,一直沿

2015-03-25 14:17:26 624

原创 c#基础语言编程-Path和Directory

引言 在程序常会对文件操作,在对文件操作中需要对文件路径的进行定位,在.Net中针对寻找文件提供两个静态类以供调用,Path和Directory。Path类来自命名空间SYstem.IO,Path类提供的方法是对党获取文件路径后处理方法,更应该算是对字符串操作。 例子代码using System;using System.Collections.Generic;using System.Li

2015-03-24 20:53:44 1856

原创 c#基础语言编程-装箱和拆箱

引言为什么有装箱和拆箱,两者起到什么作用?NET的所有类型都是由基类System.Object继承过来的,包括最常用的基础类型:int, byte, short,bool等等,就是说所有的事物都是对象。如果程序中所有的类型操作用的是引用类型时,往往导致效率低下,所以.Net通过将数据类型分为值类型和引用类型。 前面文章中讲过;值类型定义:值类型是在栈中分配内存,在声明时初始化后才能使用,不能为

2015-03-23 15:55:30 722

转载 c#基础语言编程-集合

引言在c#常用的集合分为非泛型集合和泛型集合。 非泛型集合的类和接口位于System.Collections命名空间。这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。 泛型集合的类和接口位于System.Collections.Generic命名空间。命名空间包含定义泛型集合的接口和类,泛型集合允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性能。 S

2015-03-20 16:34:48 548

原创 c#基础语言编程-异常处理

异常的定义异常就是程序中的运行时错误,当出现异常时,系统会捕获这个错误并抛出一个异常。若程序没有提供处理该异常的代码,系统会挂起这个程序。 常见异常的类型System.Exception 最泛化的异常,其他所有异常类型都从它派生。System.ArgumentException: 传给方法的一个参数无效。System.ArgumenNullException: 一个不应该为null的

2015-03-18 14:24:20 560

原创 c#基础语言编程-常用函数

类型转换Convert Convert考虑数据意义的转换。 Convert是一个加工、改造的过程。在使用Convert的转换过程中不会返回异常,当遇到类型转换的不知道的时候,用Convert找找。 Tryparse和Parse Int.TryParse为强制转为字符串,如不能转化成功,则返回false,比如 String str= “1243sdf”; parse中转化不成功的话,则溢出

2015-03-18 12:00:01 685

原创 c#基础语言编程-多态

语言中的多态性是为了使程序有扩展性,为实现多态性,在程序中体现为接口、抽象类、父类、具体类。 接口就是一种规范,解决了多重继承的问题,类似一种规范,告诉我要做什么,具有什么能力,在接口中定义写行为属性。 接口规范接口只能包含方法(属性、事件、索引器最终都是方法),不能有字段。 接口中成员不许有访问修饰符,默认为public,手动添加会编译出错。接口中成员只有定义,没有任何实现,像抽象类一样

2015-03-17 20:05:58 615

原创 c#基础语言编程-按值类型和引用类型传递参数

引言在介绍传递参数介绍前,请明白参数类型和传递方式是不同的。传递方式分为按值类型和引用类型传递参数。参数类型有值类型和引用类型,这个和C++是不同的。这里的传递方式对应c++中的深复制和浅复制。 两钟传递方式不同的标志为在调用函数中是否有ref,out这些标志,有的话,则为按引用传递,没有的话就是按值类型传递参数,根据参数类型的不同,可以分为按值传递值类型参数、按值传递引用类型、按引用传递值类型、

2015-03-17 10:29:11 704

原创 c#语言基础编程—string

引言在c#中经常会有相关的string的操作,string类型为引用类型,集成于Object,所以会有四个方法。详情可见值类型和引用类型的区别 里面详细介绍了,值类型和引用类型的区别和应用场合,所以在应用中为提高程序效率,尽量减少装箱和拆箱操作。string类方法汇总string (char[]) 使用指定的字符串数组构建一个新的string对象。int Compare(string a

2015-03-16 20:00:05 570

基于视觉的运动目标跟踪算法及其在移动机器人中的应用

对于研究模式识别的同学,这篇文档还是很有好处的

2012-05-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除