- 博客(18)
- 资源 (3)
- 问答 (3)
- 收藏
- 关注
原创 归并排序之python实现
将两个有序数列合并成一个有序数列,此过长叫做归并排序。对一个序列通过归并算法进行排序时,可先讲此序列拆分成多个两两一组的序列,然后归并。本文主要描述归并过程,并假设按照递增进行排序。 归并过程并不复杂,过程可描述为。根据条件递增遍历两个序列。取出第一个元素与另一个序列的第一个元素进行比较。拿出较小的元素放到目标序列中,并将此序列下标进行加一操作。如果其中一个序列遍历完毕,则将另一个序列的...
2019-12-15 16:20:57
235
原创 排序算法之插入算法
对于少量的元素排序,插入算法是一个有效的算法。写起来也很简单。本文将用python语言实现算法。插入排序,可以简单描述为从序列的第二个元素开始递增,使用此元素作为关键元素,使之与前面的元素做比较。找到合适自己的位置。此关键元素之前的序列将是有序的,而此关键元素之后的序列是无序的。代码如下:value = [3,9,7,8,4,2,3,8]j=1for v in value: k...
2019-12-07 20:29:16
189
原创 设计模式之装饰模式 C++实现
有时候我们需要在某个类已有的功能中添加新的功能。此时我们可以用继承的方式来给类添加功能。我们也可以用装饰模式来实现。 装饰模式,动态的给一个对象添加功能。与继承的方式相比,它更有灵活性。 装饰模式实现思路是。在原有对象上嵌入想要扩展的装饰器。装饰器实现装饰功能。UML图如下;其中,Component定义一个对象接口,可以动态的给这些对象添加功能。Decora...
2018-08-04 18:29:31
228
原创 设计模式之代理模式 C++实现
代理模式实现起来比较简单。简单描述就是,隐藏真正实现的功能,而采用一个代理类来进行对隐藏部分的访问。客户只操作代理类。代理模式从一定程度上降低了系统的耦合性。 代理模式应用有集中情况 一,远程代理。为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。 二,虚拟代理。根据需要创建开销很大的对象。通过它来存放实例化需要很长时间...
2018-07-28 17:31:42
179
原创 设计模式之单例模式 C++实现
单例模式是应用很广泛的一种设计模式,当需要某个类在整个工程中只有一个实例的时候,就需要用到单例模式了。实现思路也不难。首先,将构造函数设置为私有(private)权限,这样就不允许外部创建实例了。然后,内部创建一个实例,再通过一个接口的getInstance(),将其设置为公开(public)权限的静态(static)特性,外部就可以通过这个接口来访问类了。普通单例模式主要代码如下:...
2018-07-22 12:31:55
184
原创 设计模式之抽象工厂模式 C++实现
前面两篇文章分别介绍了,简单工厂模式以及工厂方法模式。接下来我将介绍一下,抽象工厂模式。抽象工厂模式主要用于具有复杂层级和分类的设计中。比如,分别把网卡驱动和声卡驱动当作一种product。那windows和linux以及mac都需要这两种product。此类设计使用抽象工厂模式最合适不过。抽象工厂模式比较易于交换产品系列。 UML图如下。从UML图中可以看出,想要某xie li具体...
2018-07-07 20:13:35
215
原创 设计模式之工厂方法模式 C++实现
前文介绍了简单工厂模式,用起来很简单。但是如果要增加其他运算那么简单工厂模式就需要修改现有代码。这违背了开放-封闭原则(对扩展开放,对修改封闭)。工厂方法模式弥补了这种缺点。工厂方法模式,让子类决定实例化哪一个类。UML图如下;不需要判断条件,客户端直接根据自己的需求调用相应的工厂。代码如下;(为了方便此处直接使用创建某产品作为例子)//工厂类如下//Factory#pragma onc...
2018-07-01 15:10:12
167
原创 设计模式之简单工厂模式 C++实现
个人认为简单工厂模式是最简单的一种设计模式,同时也是应用最广泛的一种设计模式。设计思路是用户根据条件筛选生成哪种产品,然后将条件传递给factory,由Factory生成具体产品(本文为具体运算)。 UML如图代码实现:运算类//运算//Operation.h#pragma once#include <string>class operation{ ...
2018-06-23 17:34:40
199
原创 CEF3在windows下使用Visual Studio2013配置
项目有嵌入页面的需求,搜了一下发现CEF3可以实现。这里不对CEF3做太多介绍,单纯展示如何在windows下编译CEF3。首先计算机上需要安装Visual Studio(我本机用的是VS2013)新版CEF3 需要用CMake编译所以去下载一个CMake并安装,地址:点击打开链接。(我选择的是cmake-3.10.2-win32-x86版)下载CEF3地址:点击打开链接(我选择的是cef_bin...
2018-03-24 18:36:55
1331
原创 QT 使用QWebEngineView 加载浏览器页面
有时候项目需要嵌入一些网页操作,Qt 为我们提供了方便的类来做这个操作,这就是 QWebEngineView 类。可用此很简单的实现嵌入网页页面功能。简单Demo如下。用Qt自带 QtCreator 在 .pro文件中加入 QT += webenginewidgets然后在 代码中包含头文件#include 加入如下代码。ui->setupU
2017-11-26 15:22:56
13345
原创 Qwt QwtPlotZoomer放大还原后横坐标变换解决
最近使用QWT做一个画波形的项目,由于需要用时间做横轴所以在设置标尺的时候需要这样this->setAxisScale(QwtPlot::xBottom, 0.0, 3600.0,600); 这会有一个问题就是当添加 QwtPlotZoomer以后选中放大没问题,但是右键(默认)还原以后,横轴会发生变化。解决这个问题的办法是,添加一个槽函数用来响应QwtPlotZoomer::zoo
2017-06-13 11:39:12
4733
原创 C++ 对std::string 做 sizeof 操作
直接上代码 我的机器是32操作系统 编译器是 VS2008const char a[] = "zhang"; int i; i = sizeof( a ); std::string str; int j = sizeof(str.c_str()); int z = sizeof(str);i == 6;(“zhang”后面有一个空字符) j == 4; z ==32;所以我在
2014-03-22 15:33:59
1038
原创 C++while与输入流一起用的时候
今天写一段代码,发现了一个以前没有遇到过的问题。 std::string str1,str2; std::cout << "input str1" << std::endl; while(std::cin>>str1) { std::cout << "please input str2" <<std::endl; std::cin.clear(); while(std::ci
2014-03-02 22:38:31
2691
原创 CEGUI 中文输入的坎坎坷坷
CEGUI的中文输入是一个老话题了,由于本人是初学者,对于好多问题也不了解。在此只简单说一下自己遇到的问题。 开始做的时候上网找了好多资料感觉各种糊涂。后来受到师父点拨要用到消息钩子。在网上搜了一个。研究半天才知道怎么用。可是没成功,没办法再找前辈要。这次又没能成功编译运行都没错误,只是运行的时候中文怎么也出不来,后来师父帮我发现,是输入法没起来。没办法在MFC上实现吧。 MFC上
2014-02-16 00:23:05
690
原创 C++中 数组维数和动态数组维数的区别
谨记!数组的维数必须是大于或等于1的常量表达式。此常量表达式只能包含整形字面值常量、枚举类型或者用常量表达式初始化的整形const对象。非const变量以及要到运行的时候才知道其值的变量都不能用于定义数组维数。 而动态数组维数可以是任意的复杂表达式。 string str; const size_t ix = str.size(); char
2014-02-09 16:12:36
1283
原创 C++中类型空间及所能存储的最大值
仅用来提醒自己经常忘记的C++的int型变量所占的空间和最大值 32位机器中 int类型和long类型字长是相同的占 4byte(字节) ,4字节等于一个字,一个8位的块作为一个字节。
2014-01-23 21:52:47
1541
TA创建的收藏夹 TA关注的收藏夹
TA关注的人