清泉逐流

做着努力,等待幸福到来
» 我的笔记

最大子序列和问题

时间 : 2014-07-31 17:58 分类 : 算法

问题描述

输入一组整数,求出这组数字子序列和中最大值。也就是只要求出最大子序列的和,不必求出最大的那个序列。例如:

序列:-2 11 -4 13 -5 -2,则最大子序列和为20。

序列:-6 2 4 -7 5 3 2 -1 6 -9 10 -2,则最大子序列和为16。

查看全文 »

图的存储结构

时间 : 2014-06-23 22:53 分类 : 算法

1.图的邻接矩阵(Adjacency Matrix)存储表示法 设图 A = (V, E)是一个有 n 个顶点的图, 图的邻接矩阵是一个二维数组 A.edge[n][n],用来存放顶点的信息和边或弧的信息。

定义为:

(1) 无向图的邻接矩阵是对称的;有向图的邻接矩阵可能是不对称的。

查看全文 »

static_cast、dynamic_cast、reinterpret_cast、const_cast

时间 : 2014-06-02 23:32 分类 : C/C++

static_cast <new_type> (expression) 静态转换

静态转换是最接近于C风格转换,很多时候都需要程序员自身去判断转换是否安全。

dynamic_cast <new_type> (expression) 动态转换

动态转换确保类指针的转换是合适完整的,它有两个重要的约束条件,其一是要求new_type为指针或引用,其二是下行转换时要求基类是多态的(基类中包含至少一个虚函数)。

查看全文 »

运算符重载

时间 : 2014-06-02 22:16 分类 : C/C++

不允许重载的运算符

作用域运算符::

成员访问运算符.

成员指针访问运算符.*

条件运算符?:

查看全文 »

typeid in C++

时间 : 2014-06-02 21:52 分类 : C/C++

操作符 typeid 用法上类似于操作符 sizeof (?)

只有当 typeid 的参数是带虚函数的类类型的对象的时候,才返回动态类型信息.

对其他,返回静态的、编译时的类型

查看全文 »

dynamic_cast in C++

时间 : 2014-06-02 21:48 分类 : C/C++

作用:将一个基类对象指针(或引用)cast到继承类指针,dynamic_cast会根据基类指针是否真正指向继承类指针来做相应处理,即会作一定的判断。

对指针进行dynamic_cast,失败返回null,成功返回正常cast后的对象指针;

对引用进行dynamic_cast,失败抛出一个异常,成功返回正常cast后的对象引用。

注意:

dynamic_cast在将父类cast到子类时,父类必须要有虚函数。例

查看全文 »

虚继承

时间 : 2014-06-02 21:03 分类 : C/C++

虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。

类D继承自类B1、B2,而类B1、B2都继承自类A,因此出现如右图所示的局面(非虚基类)。

为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。最后形成如图所示的情况。

实现的代码如下:

class A;

查看全文 »

public private & protected

时间 : 2014-06-02 18:51 分类 : C/C++

三种访问权限

public:可以被任意实体访问

protected:只允许子类及本类的成员函数访问

private:只允许本类的成员函数访问

三种继承方式

public 继承

查看全文 »

指针和引用的区别

时间 : 2014-05-26 02:31 分类 : C/C++

非空区别:引用总是不为空

合法性区别:指针使用时,总要检查其合法性

可修改区别:引用一旦初始化就不能修改

应用区别:在不同时候指向不同的对象,也可能不指向任何对象

初始化区别:引用在定义时就要对其初始化

查看全文 »

空类占多少空间

时间 : 2014-05-26 02:25 分类 : C/C++

上代码:

class A1 { }; class A2 { }; class B : public A1 { }; class C : public virtual B { }; class D : public A1, public A2 { };sizeof(A1) : 1

sizeof(B)  : 1

sizeof(C)  : 4

sizeof(D)  : 1

查看全文 »
» 笔记大类