- 博客(13)
- 收藏
- 关注
原创 策略模式(C++实现)
策略模式定义一系列的算法,把他们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。属于行为型模式。适用场景1、许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。2、需要使用一个算法的不同变体。例如,你可能会定义一些反映不同的空间 /时间权衡的算法。当这些变体实现为一个算法的类层次时,可以使用策略模式。3、 算法使用客户不应该知道的数据。可使用策略模式以避免暴露复杂的、与算法相关的数据结构。4、一个类定义了多种行为 , 并且这些
2021-05-08 15:51:14
1269
原创 观察者模式(C++实现)
观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象,在它的状态发生变化时,会通知所有的观察者.优点:①观察者和被观察者是抽象耦合的。②建立一套触发机制。缺点:①如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。②如果在观察者和观察目标之间有循环依赖的话,观察目标会触发它们之间进行循环调用,可能导致系统崩溃。③观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的,而仅仅只是知道观察目标发生了变化。.
2021-05-07 17:07:23
550
原创 Qt动画框架
Qt动画框架Qt动画框架是Kinetic项目的一部分,主要目的是提供一种简单的方法用于创建动画的和平滑的GUI。通过Qt动画属性,Qt动画框架为部件和其他QObject对象的动画操作提供了非常大的自由性。Qt动画框架也能用于图形视图框架中。在这片文章中,我们阐述了Qt动画框架的基本结构。我们也提供了一些通用性编码技术方面的例子用于动画操作QObject和图形项。Qt动画框架结构在这节中,我们宏观了解下Qt动画框架结构以及其怎么被使用于Qt动画属性。下图展示了Qt动画框架中的一些重..
2021-04-28 16:51:13
485
原创 C++四种类型转换总结
C++四种类型转换总结C风格的强制类型转换很简单,均用 Type b = (Type)a 形式转换。C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用,如下表:转换类型操作符 作用 const_cast 去掉类型的const或volatile属性 static_cast 无条件转换,静态类型转换 dynamic_cast 有条件转换,动态类型转换,运行时检查类型安全(转换失败返回NULL) reinterpret_cast 仅重新解释...
2021-04-28 16:45:09
528
原创 求最长公共子串
/* 在两个字符串中找到最长的公共子串 */#include #include #include //查找字符串shortstr与字符串longstr的最长公共子串substr,并返回其长度int lcs(const char* shortstr, const char* longstr, char * substr) { int i = 0; int j =
2013-08-01 17:27:49
646
原创 Pascal三角
#include long combi(int n, int r) { int i; long p = 1; for (i = 1; i <= r; i++) p = p * (n - i + 1) / i; return p;}void pascal_triangle(int m) { int i, n, r; for (n = 0; n
2013-08-01 17:16:09
994
原创 fibonacci数列(递归法)
#include #include int fibonacci(int n){ if(n == 0 || n== 1) return 1; else return fibonacci(n-2)+fibonacci(n-1);}int main(){ int n,i; printf("请输入费氏数列的个数:"); scanf("%d
2013-08-01 17:11:29
756
原创 汉诺塔(递归法)
#include int main() { void hanoi(int, char, char, char); int n; printf("请输入汉诺塔的层数:"); scanf("%d", &n); printf("移动该汉诺塔的顺序为:\n"); hanoi(n, 'A', 'B', 'C'); return 0;}void hano
2013-08-01 17:08:17
713
原创 求最大公约数和最小公倍数
// 输入两个整数m和n,求其最大公约数和最小公倍数#include #include /* 最大公约数 */int gcd(int a, int b) { int t; if (a < b) { t = a; a = b; b = t; } if (b == 0) return a; return gcd(b, a % b);
2013-08-01 17:02:32
650
原创 找鞍点
/* 找出一个二维数组中的鞍点 即该位置上的元素在该行上最大,在该列上最小 */#include int main() { int a[100][100]; int i, j, k, m, n; int isSaddlePoint = 1; //鞍点标记 int saddlePointCount = 0; //记录矩阵中鞍点的个数 int max, maxj;
2013-08-01 16:34:56
1095
原创 用*输出一个菱形
//用*输出一个菱形#includevoid main() { int i, j, k, n; printf("请输入一个正整数n(菱形的边长):"); scanf("%d", &n); //输出菱形上半层 for (i = 1; i <= n; i++) { //输出空格:第i层有n-i个空格 for (j = 0; j < n - i;
2013-08-01 14:54:40
1264
原创 求100到200之间的所有素数
#include #include //判断m是否是素数,是返回1,不是返回0int isPrime(int m) { int i, k; k = sqrt(m); for (i = 2; i <= k; i++) { if (m % i == 0) { break; } } if (i > k) { return 1; }
2013-08-01 14:09:43
1702
原创 AutoCAD快捷键
CAD快捷键大全命令功能3D创建三维多边形网格对象3DARRAY (3a)创建三维阵列3DCLIP启用交互式三维视图并打开“调整剪裁平面”窗口3DCORBIT启用交互式三维视图并允许用户设置对象在三维视图中连续运动3DDISTANCE启用交互式三维视图并使对象显示得更近或更远3DFA
2013-08-01 12:43:57
1702
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人