自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 QtCreator插件框架及源码学习

QtCreator插件框架QtCreator实现了一个构造良好、精简的插件系统,学习其源码对于我们掌握插件框架设计以及复用其插件框架具有重要意义。本人将QtCreator的插件框架抽取出来,并在源代码中添加自己的注释,只为参考学习之用。进一步的源码学习还在进行中,由于本人水平有限,如果对其感兴趣的话可以访问GitHub项目地址。参考Qt Creator 源码学习深入理解QtCreator的插件设计架构...

2020-11-10 02:12:28 668

原创 C++ 实现排列组合

说明该文章只为自己记录学习用参考极客时间程序员的数学基础课第7、8讲排列代码实现#include <iostream>#include <vector>using namespace std;template <typename T>class Permutation{public: typedef vector<T> Sequence; typedef vector<bool> BitMap;p

2020-10-21 16:43:06 2381 2

原创 C++ 实现数学归纳法证明过程

数学归纳法证明一般步骤证明基本情况(通常是 n = 1的时候)是否成立;假设 n = k - 1 成立,在证明 n = k 时也是成立的(k 为任意大于1的自然数)。参考极客时间程序员的数学基础课专栏第四讲代码实现头文件:mathematical_induction.hpp#ifndef MATHEMATICAL_INDUCTION_H#define MATHEMATICAL_INDUCTION_H/** * @description 数学归纳法证明 * @param St

2020-10-19 11:00:54 487

原创 C++ 利用二分法求整数平方根

利用二分法求整数的平方根例如求10的平方根,则在1 ~ 10间利用二分法判断(1 + 10) / 2 = 5.5的平方是否大于或小于10,如果5.5的平方大于10,则在1 ~ 5.5之间继续二分查找;如果5.5的平方小于10,则在5.5 ~ 10之间继续二分查找;如果5.5的平方等于10,则找到10的平方根。代码实现#include <iostream>#include <math.h>using namespace std;// 指定精度与迭代次数double s

2020-10-18 19:40:15 2099 1

原创 C++ 大整数类(无符号BigInteger类和带符号SignedBigInteger类)实现

C++ BigInteger类实现,存储任意大小的非负整数参考算法竞赛入门经典第二版 5.3 节——大整数类代码(先放代码,后续追加注释与可以为负数的实现)#include <string>#include <vector>#include <algorithm>#include <iostream>using namespace std;/** * 存储任意大小的非负整数 */class BigInteger{ fr

2020-10-17 12:09:45 3209 1

原创 拓扑排序——插件加载顺序

拓扑排序问题描述有如下插件间依赖关系:插件1依赖于插件0插件2依赖于插件0插件3依赖于插件0插件4依赖于插件1插件5依赖于插件1插件6依赖于插件2和插件3插件7依赖于插件2和插件5求一种插件加载队列,使得被依赖插件先于依赖插件加载。解决方案利用拓扑排序,根据插件间的两两依赖关系,得出合适的插件加载顺序。将插件看作节点,插件间的依赖关系看作两个插件节点之间的有向边,如插件A依赖于插件B,则有一条从B到A的有向边。据此,可得到一幅有向图。由上述问题,可得有向图如下所示:首先找出

2020-09-16 21:36:13 750

原创 序列中的所有子序列

序列中的所有子序列题目对于一个序列,如{1, 2, 3, 4, 5},求其所有子序列,如{1}、{1, 2}、{1, 3, 5}等等。解法对于一个长度为n的序列,其所有子序列的个数为2^n - 1,规模呈指数级增长,所以在此探讨长度不大于32的序列。因此,可以采用位图的方法来解决该问题,利用int型变量作为位图。如上题中,可以用10000来表示取{1},用11000来表示取{1, 2},用{10101}来表示取{1, 3, 5}。因此,00001~11111之间的数表示原序列的一个子序列,故而可以

2020-09-14 22:54:13 3368

原创 LRU缓存机制C++泛型实现

LRU缓存机制C++泛型实现题目如LeetCode 146题运用你所掌握的数据结构,设计和实现一个LRU(最近最少使用)缓存机制。它应该支持以下操作:获取数据get和写入数据put。获取数据get(key) - 如果关键字(key)存在于缓存中,则获取关键字的值(总是正数),否则返回-1.写入数据put(key, value) - 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组 [关键字/值] 。当缓存容量达到上限时,他应该在写入新数据之前删除最久未使用的数据值,从而为新数据值留出

2020-09-08 10:34:14 207

转载 静态库推荐的用例场景

静态库推荐的用例场景静态库是一种最基础的二进制代码共享方式,并在动态库出现以前已经被使用了很长一段。在此期间,动态库这种更为复杂的模式逐渐成为了共享二进制代码的主流。虽说如此,我们还是会在少数应用场景中使用静态库。在实现各种核心算法时使用静态库还是非常合适的,无论是对于一些像查询和排序这样的基本算法,还是一些非常复杂的科学或数学领域的算法。下面列出的项目能够更好地说明我们为什么要用静态库的方式来提供代码实现:可以把整个代码体系结构看作**“具有各种各样功能的集合”**,而不是“严格定义接口的模块”。

2020-08-30 14:55:40 226

原创 二叉排序树类

二叉排序树代码#include <iostream>using namespace std;// 节点类template <typename T>struct Node{ T data; Node<T> *left; Node<T> *right; Node<T> *parent; Node() : left(nullptr), right(nullptr), parent(nullptr)

2020-08-03 14:40:56 218

空空如也

空空如也

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

TA关注的人

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