- 浏览: 223953 次
- 性别:
- 来自: 上海
最新评论
文章列表
对象(Object)是类(Class)的一个实例(Instance)。如果将对象比作房子,那么类就是房子的设计图纸。所以面向对象设计的重点是类的设计,而不是对象的设计。
对于C++程序而言,设计孤立的类是比较容易的,难的是正确设计基类及其派生类。本章仅仅论述“继承”(Inheritance)和“组合”(Composition)的概念。
注意,当前面向对象技术的应用热点是COM和CORBA,这些内容超出了C++教材的范畴,请阅读COM
- 2012-11-18 11:31
- 浏览 563
- 评论(0)
11.1使用const提高函数的健壮性
看到const关键字,C++程序员首先想到的可能是const常量。这可不是良好的条件反射。如果只知道用const定义常量,那么相当于把火药仅用于制作鞭炮。const更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。
const是constant的缩写,“恒定不变”的意思。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设计书籍建议:“
- 2012-11-18 11:30
- 浏览 560
- 评论(0)
遗传算法入门
遗传算法
遗传算法(Genetic Algorithm, GA)是近几年发展起来的一种崭新的全局优化算法。1962年霍兰德(Holland)教授首次提出了GA算法的思想,它借用了仿真生物遗传学和自然选择机理,通过自然选择、遗传、变 ...
- 2012-11-18 11:24
- 浏览 866
- 评论(0)
1、 堆排序定义n个关键字序列Kl,K2,…,Kn称为堆,当且仅当该序列满足如下性质(简称为堆性质):(1) ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤ )若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字均不大于(或不小于)其左右孩子(若存在)结点的关键字。【例】关键字序列(10,15,56,25,30,70)和(70,56,30,25,15,10)分别满足堆性质(1)和(2),故它们均是堆,其对应的完全二叉树分别如小根堆示例和大根堆示例所示。2、大根堆和小根堆
- 2012-11-18 11:23
- 浏览 632
- 评论(0)
算法的实现
一、初始化
由用户输入数据,分别对可利用资源向量矩阵AVAILABLE、最大需求矩阵MAX、分配矩阵ALLOCATION、需求矩阵NEED赋值。
二、银行家算法
在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统始终都处于安全状态,便可以避免发生死锁。
银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。它是最具有代表性的避免死锁的算法。
设进程cusneed提出请求REQUEST [i],则银行家算法按如下规则进行判断。
(1)如果 ...
- 2012-11-18 11:23
- 浏览 594
- 评论(0)
多重背包O(N*V)算法详解(使用单调队列)
多重背包问题:
有N种物品和容量为V的背包,若第i种物品,容量为v[i],价值为w[i],共有n[i]件。怎样装才能使背包内的物品总价值最大?
网上关于“多重背包”的资料倒是不少,但 ...
- 2012-11-18 11:22
- 浏览 1052
- 评论(0)
创建图形列表并和CListCtrl关联:
m_image_list.Create(IDB_CALLER2, 16, 10, RGB(192,192, 192));
m_image_list.SetBkColor( GetSysColor( COLOR_WINDOW ) );
m_caller_list.SetImageList( &m_image_list, LVSIL_SMALL);
为报表添加4列:
char *szColumn[]={"昵称","IP地址","登陆时间","状态"};
...
- 2012-11-18 11:20
- 浏览 2339
- 评论(0)
1.功能:创建(build objects)对象,将一连串的随意的内存位变对象,也分配资源(memory, files, semaphores, sockets等),"ctor" 是构造函数(constructor)典型的缩写。2.假定List是个类名,Listx和Listx()的区别:前者声明了一个List对象,后者则是一个函数,返回List类型。
3.能否在一个构造函数中调用另一个构造函数?答案是否定的。
假设类Fro有两个构造函数Foo::Foo(char x)和Foo::Foo(char x,int y),那么下面的代码
classFoo{
public:
...
- 2012-11-18 11:17
- 浏览 612
- 评论(0)
二叉树遍历算法集合(前中后序遍历的递归和非递归算法,层序遍历算法)
费了两天时间写的,包括前中后序遍历的递归和非递归算法,还有层序遍历总共2*3 + 1 = 7中遍历二叉树的算法,感觉其中后序遍历的非递归算法比较困难,想了很久最后的实现还是不够优雅,请大家指正~~
总共三个文件,一个头文件,一个对应的cpp文件,还有一个用于测试的文件.
头文件:
/********************************************************************created:2006/07/04filename:BinaryTree.hauthor: ...
- 2012-11-18 11:14
- 浏览 1104
- 评论(0)
stl的算法(一):对序列进行只读操作(查找、搜索等)
Stl的算法的不更改序列操作主要有以下12项:
for_each、find、find_if、find_end、find_first_of、adjacent_find
count、count_if、mismatch、equal、search、search_n
1、 for_each:遍历某个区域内每个元素
原型:template <class InputIterator, class Function>
Function for_each (InputIterator first, InputIterator ...
- 2012-11-18 11:13
- 浏览 685
- 评论(0)
一、sort:对一定范围内的所有元素排序
原型:
template <class RandomAccessIterator>
void sort ( RandomAccessIterator first, RandomAccessIterator last );
template <class RandomAccessIterator, class Compare>
void sort ( RandomAccessIterator first, RandomAccessIterator last, Compare comp );
例子代码:
// sor ...
- 2012-11-18 11:12
- 浏览 604
- 评论(0)
STL算法(Algorithms):极值
1、min:返回两个两个参数中的最小值
原型:template <class T> const T& min ( const T& a, const T& b );
template <class T, class Compare>
const T& min ( const T& a, const T& b, Compare comp );
示例:
// min example
#include <iostream>
#include <alg ...
- 2012-11-18 11:12
- 浏览 545
- 评论(0)
1、make_heap:使序列变成堆原型:template <class RandomAccessIterator> void make_heap ( RandomAccessIterator first, RandomAccessIterator last );template <class RandomAccessIterator, class Compare> void make_heap ( RandomAccessIterator first, RandomAcces
- 2012-11-18 11:12
- 浏览 489
- 评论(0)
Stl的函数对象的写操作:
copy、copy_backward、swap、swap_ranges、iter_swap、transform、
replace、replace_if、replace_copy、replace_copy_if、fill、fill_n、
generate、generate_n、remove、remove_if、remove_copy、remove_copy_if、
unique、unique_copy、reverse、reverse_copy、rotate、rotate_copy、
random_shuffle、partition、stable_parti ...
- 2012-11-18 11:11
- 浏览 734
- 评论(0)
1、merge:将两个序列合并成一个新的序列,并对新的序列排序
原型:
template <class InputIterator1, class InputIterator2, class OutputIterator>
OutputIterator merge ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2,OutputIterator result );
template <class InputIterator1, cl ...
- 2012-11-18 11:08
- 浏览 843
- 评论(0)