自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Effective C++:条款40:明智而审慎地使用多重继承

(一) 慎用多重继承,因为那样的话可能会造成歧义。。class BorrowableItem { public: void checkOut(); };class ElectronicGadet { private: bool checkOut() const; };class MP3Player : public BorrowableItem

2014-07-07 11:57:41 842

原创 数据结构:链表的基本操作(创建,删除,插入,逆序,摧毁)

代码注释比较详细:#include #include using namespace std;struct Node{ int data; Node* next;};Node* head = NULL;bool create() { head = (Node*)malloc(sizeof(Node)); if(NULL == head) return false;

2014-07-06 20:05:08 1129

原创 Effective C++:条款39:明智而审慎地使用private继承

(一)(1)private继承意味着“根据某物实现出”,只有实现部分被继承,接口部分应略去;(2)它只在软件“实现”层面上有意义,在软件“设计”层面上没有意义。(3)private继承而来的基类成员都会在派生类中成为private属性,纵使它们在base class中原本是protected或public属性;(4)如果类之间是private继承关系,编译器不会自动将一个派生类对象

2014-07-06 17:54:17 828

原创 Effective C++:条款38:通过复合塑模出has-a或“根据某物实现出”

(一)public继承是“is-a“的关系,而复合有”has-a“或”根据某物实现出(is-implemented-in-terms-of)“的意思——当复合发生在应用域内的对象之间,表现出has-a关系;当它发生于实现域内则是表示“根据某物实现出”的关系。应用域部分,相当于你塑造的世界中的某些事物,例如人,汽车等。后者的对象则是实现细节人工产品(这产品现实世界中是没有的),像什么

2014-07-04 18:46:18 899

原创 ACM:回溯法,八皇后问题,素数环

(一)八皇后问题(1)回溯法#include #include #define MAXN 100using namespace std;int tot = 0, n = 8;int C[MAXN];void search(int cur) { if(cur == n) ++tot; //递归边界,只要走到了这里,所有皇后必然不冲突 else for(in

2014-07-03 21:55:18 1901

原创 ACM:回溯法,子集生成

(一)增量构造法#include #include using namespace std;const int MAXN = 1000;int A[MAXN], n;void print_subset(int n, int *A, int cur) { for(int i = 0; i < cur; ++i) cout << A[i] << " "; cout << endl

2014-07-03 20:45:02 1105

原创 Effective C++:条款37:绝不重新定义继承而来的缺省参数值

由于重新定义继承而来的non-virtual函数是不正确的(见上一个条款),所以这个条款就将问题局限于:绝不重新定义继承一个带有缺省参数值的virtual函数。(一)virtual函数是动态绑定的,而缺省参数却是静态绑定。 对象的所谓静态类型,是它在程序中被声明时所采用的类型。你可能会在“调用一个定义于derived class 内的virtual函数”的同时,却使用了ba

2014-07-03 16:55:14 831

原创 Effective C++:条款36:绝不重新定义继承而来的non-virtual函数

(一)首先有下面的继承体系:class B { public: void mf(); ... }; class D : public B {...};D x;以下行为:B* pB = &x;pB->mf();异于以下行为:D* pD = &x;pD->mf();上面两种行为产生的结果不一定相同。看下面这种

2014-07-03 15:43:10 757

原创 ACM:回溯法,枚举排列

(一)生成1~n的排列分析:用递归的思想解决:先输出所有以1开头的排列(这一步是递归调用),然后输出以2开头的排列(又是递归调用),接着是以3开头的排列......最后才是以n开头的排列。伪代码:void print_permutation(序列A, 集合S) {if(S为空) 输出序列A;else 按照从小到大的顺序依次考虑S的每个元素v {print_permutati

2014-07-02 22:57:05 1305

原创 ACM:二分查找,以及利用二分法来找上下界

(一)二分的模版:int binary_search(int *array, int length, int key) { int start = 0, end = length - 1; while(end >= start) { int middle = start + (end - start) / 2; int tmp = array[middle]; if(tmp <

2014-07-01 23:22:06 1846

原创 ACM:归并排序,以及利用归并排序思想求解逆序对数!

(一)归并排序分析:(1)划分问题:把序列分成元素个数尽量相等的两半。(2)递归求解:把两半元素分别排序。(3)合并问题:把两个有序表合并成一个。(每次只需要把两个序列的最小元素加以比较,删除其中的较小元素并加入合并后的新表)#include using namespace std;const int MAXN = 1000;int A[MAXN], T[MAXN];

2014-07-01 23:16:48 905

原创 ACM:递归与分治,最大连续和,O(n3), O(n2), O(nlogn), O(n) 算法。

题目,求一个连续的数组,最大连续和。(一)O(n3)算法:利用穷举法的思想,这种方法的效率最差。代码如下:#include #include #include #include using namespace std;const int MAXN = 1000;int A[MAXN], n;int maxsum(int *A, int n) { int beat

2014-07-01 22:22:04 2029

原创 Effective C++:条款35:考虑virtual函数以外的其他选择

游戏中的人物伤害值计算问题。(一)方法(1):一般来讲可以使用虚函数的方法:class GameCharacter { public: virtual int healthValue() const; //返回人物的体力值,派生类可以做出修改 ... }; 这确实是一个显而易见的设计选择。但因为这样的设计过于显而易见,可能不会

2014-07-01 12:23:10 881

空空如也

空空如也

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

TA关注的人

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