自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 VTK—— “点” “线” “面”相关示例

示例包含:求两点之间的距离 求点到线之间的距离 把一个点投射到平面上 透视坐标转化 perspective transform 和 transform1. 求两点之间的距离#include <vtkMath.h>#include <QDebug>int main(int, char *[]){ double p1[3] = {0.0, 0....

2018-10-19 16:57:39 1603

原创 VTK—— 生成 “随机数” 示例

方法1.vtkMath,从平均0.0和标准偏差2.0的高斯分布中产生了3个随机数#include <vtkMath.h>#include <time.h>#include <QDebug>int main(int, char *[]){ unsigned int numRand = 3; vtkMath::RandomSeed...

2018-10-19 16:50:16 864

原创 设计模式 c++版(21)——桥梁模式

定义:将抽象和实现解耦,使得两者可以独立地变化。示例一:桥梁模式(通用版)1. 类图 29-4 2. 类图说明Abstraction 抽象化角色。主要职责是定义出该角色的行为,同时保存一个对实现化角色的引用,该角色一般是抽象类。 Implementor 实现化角色。它是接口或抽象类,定义角色必须的行为和属性。 RefinedAbstraction 修正抽象化角色。它引用实例...

2018-10-10 17:05:28 380

原创 设计模式 c++版(20)—— 享元模式

定义:使用共享对象可有效地支持大量的细粒度的对象。补充说明: 享元模式的定义为我们提出了两个要求:细粒度的对象和共享对象。当分配太多的对象到应用程序中将有损程序的性能,同时还容易造成内存溢出,可以使用享元模式的共享技术。  要求细粒度对象,那么不可避免地使得对象数量多且性质相近,呐我们就将这些对象的信息分为两个部分:内部状态与外部状态。  内部状态。是对象可共享出来的信息,存储在享元对...

2018-10-10 16:16:53 262

原创 设计模式 c++版(19)—— 状态模式

定义:当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。(状态的变更引起了行为的变更,从外部看起来好像这个对象对应的类发生了改变一样)示例一:状态模式(通用版)1. 类图 26-5 2. 类图说明State 抽象状态角色接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换。ConcreteState 具体状态角色每一个具体状态必须完成两个...

2018-10-10 14:43:46 215

原创 设计模式 c++版(18)——访问者模式

定义:封装一些用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作示例一:访问者模式(通用版)1. 类图25-5 2. 类图说明Visitor 抽象访问者。抽象类或者接口,声明访问者可以访问哪些元素,具体到程序汇总就是visit方法的参数定义哪些对象时可以被访问的。ConcreteVisitor 具体访问者。它影响访问者访问到...

2018-10-09 17:21:48 257

原创 设计模式 c++版(17)——备忘录模式

定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。示例一:备忘录模式(通用版)1. 类图 24-4 2. 类图说明Originator 发起人角色。记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。Memento 备忘录角色。负责存储 Originator 发...

2018-10-09 16:17:32 166

原创 设计模式 c++版(16)——门面模式

定义:要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用(门面模式也叫做外观模式)。示例一:门面模式(通用版)1. 类图23-4 2. 类图说明Subsystem Classes 是子系统所有类的简称,它可以代表几十个对象的集合。门面对象时外界访问子系统内部的唯一通道。 3. 门面模式结构图 23-5...

2018-10-09 15:24:52 508

原创 设计模式 c++版(15)—— 观察者模式

定义:定义对象间的一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。(观察者模式也叫作发布订阅模式)示例一:观察者模式(通用版)1. 类图22-5 2. 类图说明Subject 被观察者。定义被观察者必须实现的职责,它必须能够动态地增加、取消观察者。它一般是抽象类或者是实现类,仅仅完成作为被观察者必须实现的职责:管理观察者并通知...

2018-10-09 14:01:43 199

原创 QT —— <QJson> 存储 & 解析

包含内容:JSON 文件的存储&amp;读取 为此配置文件提供单例模式 使用 hash 容器作为转化一、QT 中的 JSON 常用类&lt;QJsonDocument&gt;:1. 作用: 用于读写 JSON 文档。2. 函数:QJsonDocument::fromJson()  从文本转化为 QJsonDocument QJsonDocument::toJson(...

2018-10-08 18:35:27 1174

原创 QT —— <QHash> 存储 & 使用 & 遍历

1. 定义:QHash &lt;Key,T&gt;  存储 (键,值) 对,并提供与键相关的值的非常快速的查找。2. QHash 和 QMap 比较:  QHash提供与QMap非常相似的功能。 不同之处是:    QHash提供比QMap更快的查找。     迭代器遍历QMap时 ,项(items)始终按键排序。 使用QHash ,这些项是任意排序的。     QMap的键类型必须提...

2018-09-30 15:15:58 13057 3

原创 设计模式 c++版(14)—— 组合模式

定义:将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。组合模式也叫合成模式,有时又叫做部分-整体模式(Part-Whole),主要用来描述部分与整体的关系。示例一:组合模式(通用版)1. 类图21-6 2. 类图说明Component:抽象构件角色。定义参加组合对象的共有方法和属性,可以定义一些默认的行为或属性。Leaf...

2018-09-30 13:26:51 228

原创 设计模式 c++版(13)——迭代器模式

定义:它提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。说明:目前基本上没人会单独写一个迭代器,除非是产品性质的开发迭代器是为容器服务的,能容纳对象的所有类型的都可以称之为容器,迭代器模式就是胃解决遍历这些容器中的元素而诞生的。迭代器模式提供了遍历容器的方便性,容器只要管理增减元素就可以了,需要遍历时交由迭代器进行。 示例一:迭代器模式(通用版)1. 类...

2018-09-27 18:05:27 304

原创 设计模式 c++版(12)——适配器模式

定义:将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够一起工作。示例一:适配器模式(通用版)1. 类图19-42. 类图说明Target 目标角色。该角色定义把其他类转换为何种接口,也就是我们期望的接口。 Adaptee 源角色。想把谁转换成目标角色,这个谁就是源角色,它是已经存在的、运行良好的类或对象,通过适配器角色的包装,会...

2018-09-27 14:14:29 197

原创 设计模式 c++版(11)——策略模式

定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换示例一:策略模式(通用版)1. 类图18-3 2. 类图说明策略模式使用的就是面向对象的继承和多态机制Context 封装角色。也叫上下文角色,起承上启下的封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。 Strategy 抽象策略角色。策略、算法家族的抽象,通常为借口,定义每个策略或算...

2018-09-26 19:53:14 806

原创 设计模式 c++版(10)——装饰模式

定义:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。示例一:装饰模式(通用版)1. 类图17-5 2. 类图说明Component 抽象构件。这是一个接口或抽象类,就是定义我们最核心的对象,也就是最原始的对象,如下面的成绩单。(注:在装饰模式中,必然有一个最基本、最核心、最原始的接口或抽象类充当 Component 抽象构建)。 Co...

2018-09-26 18:00:40 185

原创 设计模式 c++版(9)——责任链模式

定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止示例一:责任链模式(通用版)1. 类图16-4 2. 代码清单////////////////// ********** 3. 责任链模式(通用版),代码清单16-3:***************//enum ...

2018-09-26 16:14:20 343

原创 设计模式 c++版(8)——命令模式

定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能示例一:命令模式(通用版)1. 类图15-4 2. 类图说明① Receive 接收者角色。该角色就是干活的角色,命令传递到这里是应该被执行的。② Command 命令角色。需要执行的所有命令都在这里声明。③ Invoker 调用者角色。接收到...

2018-09-25 19:40:45 198

原创 设计模式 c++版(7)——原型模式

定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。示例一:原型模式(通用版)1. 类图13-3 2.  代码清单13-3:class PrototypeClass;class Cloneable{public: virtual PrototypeClass clone() = 0;};class PrototypeClass:p...

2018-09-25 16:29:05 245

原创 设计模式 c++版(6)——代理模式

定义:为其他对象提供一种代理以控制这个对象的访问示例一:代理模式(通用版)1. 类图12-3 2. 类图说明:Subject 抽象主题角色:抽象主题类可以使抽象类也可以是接口,是一个最普通的业务类型定义,无特殊要求。RealSubject 具体主题角色:也叫被委托角色,被代理角色。它是业务逻辑的具体执行者。Proxy 代理主题角色:也叫委托类、代理类。它负责对真是角色...

2018-09-25 14:35:15 189

原创 设计模式 c++版(5)——建造者模式

定义:即生成器模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。示例一:建造者模式(通用版)1. 类图11-42. 类图说明:在建造者模式中,有如下4个角色:Product 产品类: 通常是实现了模板方法模式,也就是有模板方法和基本方法。例子中的 BenzModel 和 BMWModel就属于产品类。Builder 抽象建造者:规范产品的组件...

2018-09-21 18:30:00 196

原创 设计模式 c++版(4)——模板方法模式

定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。示例一:模板方法模式(通用版)1. 类图10-32. 类图说明:AbstractClass 叫抽象模板,他的方法分为两类: 基本方法:即基本操作,是由子类实现的方法,并且在模板方法被调用。 模板方法:可以有一个或几个,一般是一个具体方法,即一个框架,实现对...

2018-09-21 15:49:34 267

原创 设计模式 c++版(3)——抽象工厂模式

定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类示例一:抽象工厂模式(通用版)1. 抽象工厂模式通用类图,类图9-3说明:抽象工厂模式是工厂模式的升级版本,在有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。2. 抽象工厂模式通用源码类图,类图9-4说明:有两个相互影响的产品线(也叫做产品族),例如制造汽车的左...

2018-09-21 14:20:27 317

原创 设计模式 c++版(2)——工厂模式

定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类示例一:工厂方法模式(通用版)1.类图8-22. 类图说明:Product                抽象产品类,负责定义产品的共性,实现对事物最抽象的定义Creator                 抽象创建类,即抽象工厂ConcreteCreator  具体实现工厂,创建...

2018-09-19 18:35:43 402

原创 设计模式 c++版(1)——单例模式

定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例示例一:单例模式(通用版)1. 类图7-2 2. 代码清单7-3://// ********** 7-3 单例模式通用代码(饿汉模式) ***************//class Singleton{public: static Singleton* getSingleton(...

2018-09-19 15:25:16 240

原创 设计模式 —— 里氏替换原则

前言● 第一种定义,也是最正宗的定义:如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2 时,程序P的行为没有发生变化,那么类型 S 是类型 T 的子类型。● 第二种定义:所有引用基类的地方必须能透明地使用其子类的对象。第二个定义是最清晰明确的,通俗点讲,只要父类能出现的地方子类就可以出现,而且替换为子类也不会 产生任何错误或异...

2018-09-13 16:38:38 5881 2

原创 设计模式 —— 单一职责原则

前言单一职责原则的定义:应该有且仅有一个原因引起类的变更单一职责原则的英文名称是: Single Responsibility Principle, 简称 是 SRP。6大设计原则:单一职责原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特法则 开闭原则当在项目中,接触到用户、机构、角色管理这些模块,基本使用的都是RBAC 模型( Role- Based Access ...

2018-09-13 14:10:00 286

原创 QT —— <QString> 转int, float, double, QByteArray 等

QString类 基本说明:编码格式:提供了一个Unicode字符字符串存储方式:存储了一个16位QChars字符串,其中每个QChar对应一个Unicode 4.0字符优势       :使用隐式共享(即写即复制)来减少内存使用并避免不必要的数据复制扩展       :除了QString,Qt还提供了QByteArray类来存储原始字节和传统的8位'\0'结尾的字符串,QByteArray适...

2018-09-11 15:53:08 2628

原创 VTK(3)—— "display"坐标 转 "world"坐标

需求:通过&lt;vtkRenderWindowInteractor&gt;对象的GetEventPosition()获取到的事件位置如何转化成world坐标系下的值 一、本文包含的函数获取到的位置所在坐标系 1. display 坐标系:vtkRenderWindowInteractor 中的 GetEventPosition() 获取的位置。vtkRenderWindo...

2018-08-31 18:28:05 3345

原创 VTK(2)—— 双view,显示并联动操作

前言:接到一个新的需求window单窗口程序,双view,显示并联动操作,做了两种方式进行实现,代码思路和源码如下:(一)代码思路一、判定谁动了?方法1:通过当前事件的窗口位置与窗口大小中心轴进行比对方法2:通过移动后的相机位置与两个view中相机的位置进行比对方法3:获取当前renderer, 与两个renderer 做对比 二、如何捕获事件?方法1:继承自vt...

2018-08-29 17:14:38 2484 5

原创 VTK(1)——编译安装

项目环境:QT+VTK+CMake本文使用到的文件包有:visual studio 2013 DXSDK_Jun10 cmake-3.3.2-win32-x86 Qt5.7 qt-vs-addin-1.2.4-opensource TBB (Thread Building Blocks) vtk 7.11. 安装 visual studio 2013 Community 版本...

2018-08-28 18:02:48 2041

原创 C++ 面试题

第一部分:选择题1. 一个函数功能不太复杂,但要求被频繁调用,则应把它定义为(A )A. 内联函数 B. 重载函数C. 递归函数 D. 嵌套函数2.对于C++中类(class)与结构(struct)的描述正确的有(A)A.类中成员默认是private 的,但可以声明为public,private,protected,结构中定义的成员默认的都是public;B.结构中...

2018-08-09 15:07:21 1459

原创 QT —— "model/view" 使用帮助

(一)Model/View 结构Model-View-Controller(MVC), 是从Smalltalk发展而来的一种设计模式,常用于创建用户界面。 MVC包含3个组件:Model:         应用对象,用来表示数据 View:           模型的用户界面,用来显示数据 Controller:  定义了用户界面对用户输入的反应方式Delegate(委托):为了...

2018-08-07 19:36:56 575

原创 C++ 虚函数 纯虚函数

本文包含三个问题1.析构函数是否应为虚函数问题?2.成员函数的虚函数问题?3.析构函数是否可以为纯虚函数问题? (一)析构函数是否应为虚函数问题说明:仅在使用父类指针指向子类对象时有区别当析构函数非虚函数时,使用父类指针指向子类对象,在析构时将不会调用子类析构函数 当析构函数是虚函数时,使用分类指针指向子类对象,在析构时会调用子类析构函数,且调用顺序为:先调用子类析构...

2018-07-26 17:48:33 268

原创 C++ STL——map

Map 使用帮助:(一)常用函数:包含#include&lt;map&gt; begin()                返回指向map头部的迭代器  clear()               删除所有元素  count()                返回指定元素出现的次数  empty()               如果map为空则返回true  end()      ...

2018-07-26 12:52:03 129

原创 C++ STL——list

List 使用帮助:(一)常用函数:包含#include&lt;list&gt;push_back()      在list的末尾添加一个元素 push_front()      在list的头部添加一个元素pop_back()        删除最后一个元素 pop_front()        删除第一个元素 assign()             给list赋值 ba...

2018-07-25 20:16:54 140

原创 C++ STL——vector

Vector 使用帮助:(一)常用函数:包含#include&lt;vector&gt;push_back    在数组的最后添加一个数据 pop_back     去掉数组的最后一个数据  at                  得到编号位置的数据 begin            得到数组头的指针 end               得到数组的最后一个单元+1的指针 fron...

2018-07-25 18:34:05 191

空空如也

空空如也

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

TA关注的人

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