1、冒泡:两两“相邻”之间元素进行比较,交换位置
(交换排序)
2、选择排序:每次从未排序中选择最值,依次存放 (交换排序)
3、插入排序:依次从未排序中取出一个值,插入到已序中。
4、
模板:
函数模板:
template<typename T,typename T2> 或 tempalte<class T>
返回值 函数名(T形参1,T2 形参2,,,)
{
}
注:实参确定类型T
模板类:实现任何类型的数据类模板
template<typename T,typename T1> //注:此声明只能由于当前类
class 类
{
限定符:
T1 函数名(T形参,)
{
}
限定符:
...
T 成员;
};
类外定义接口:如果该方法用到T类时成员时,还应用在此方法声明T类
template<typename T,typename T1> //注:此声明只能由于当前类
class 类
{
限定符:
T1 函数名(T形参,);
限定符:
...
T 成员;
};
template<typename T,typename T1> //与定义的声明模板一致
T1 类<T,T1>::函数名(形参)
{
}
注:类型T由定义对象是,指定类型
定义对象:
对象<类型> 对象名;
多态:一种方法有多种形态
分类:静态多态,动态静态
静态多态:在编译时,就已经确定从多个形态中来确定调用某种接口。(重载)
优点:在运行之前,正确的调用方法 却点:调用不够灵活
动态多态:在编译时不能确定调用某个形态方法,只能在运行时才能确定。
1、由于不能由子类对象指针-》基类,但基类指针指向子类。也就是可以借助父类指针指向不同子类对象(动态)
2、由于基类指针只能指向子类的继承基础部分,但可以声明基类中的函数为虚函数,也就是可以指向不同的函数。(多态)
class 基类
{
...
virtaul 返回值 方法名();
...
};
父子之间赋值:
父子之间指针互相指向:
1、父-》子:只能由基类指针指向子类(子类中有基类的一部分),也就是只能引用继承过来的基类成员
2、子-》父:不能由子类指针指向父类(因为父类中没有子类的新增部分)
抽象类:
应用: 头插法链表: InsertNode增加节点(插入头部) 删除节点DropNode 修改节点modifyNode 查找节点FindNode
尾插法链表: InsertNode增加节点(尾部) 删除节点DropNode 修改节点modifyNode 查找节点FindNode
struct Node
{
数据区
struct Node* next;//后驱指向
};
纯虚函数:只声明方法,但不实现方法
class 抽象类
{
public:
virtual 方法()=0; //纯虚函数:没有函数体
private:
成员变量;
};
//抽象类:只声明方法但不实现(定义)方法的类
注:抽象类的定义与非抽象类的定义一样,但有如下区别:
1、纯虚函数只能子类来实现
2、抽象类(有纯虚函数的类)是不能实例化。
3、如果子类也不去实现此纯属函数,此子类也是抽象类。
4、也是虚函数。
在子类中来实现纯虚函数:
class 子类:public 抽象类
{
public:
...
声明方法();
...
};
实现方法:
返回值 子类::方法()
{
}
2、选择排序:每次从未排序中选择最值,依次存放 (交换排序)
3、插入排序:依次从未排序中取出一个值,插入到已序中。
4、
模板:
函数模板:
template<typename T,typename T2> 或 tempalte<class T>
返回值 函数名(T形参1,T2 形参2,,,)
{
}
注:实参确定类型T
模板类:实现任何类型的数据类模板
template<typename T,typename T1> //注:此声明只能由于当前类
class 类
{
限定符:
T1 函数名(T形参,)
{
}
限定符:
...
T 成员;
};
类外定义接口:如果该方法用到T类时成员时,还应用在此方法声明T类
template<typename T,typename T1> //注:此声明只能由于当前类
class 类
{
限定符:
T1 函数名(T形参,);
限定符:
...
T 成员;
};
template<typename T,typename T1> //与定义的声明模板一致
T1 类<T,T1>::函数名(形参)
{
}
注:类型T由定义对象是,指定类型
定义对象:
对象<类型> 对象名;
多态:一种方法有多种形态
分类:静态多态,动态静态
静态多态:在编译时,就已经确定从多个形态中来确定调用某种接口。(重载)
优点:在运行之前,正确的调用方法 却点:调用不够灵活
动态多态:在编译时不能确定调用某个形态方法,只能在运行时才能确定。
1、由于不能由子类对象指针-》基类,但基类指针指向子类。也就是可以借助父类指针指向不同子类对象(动态)
2、由于基类指针只能指向子类的继承基础部分,但可以声明基类中的函数为虚函数,也就是可以指向不同的函数。(多态)
class 基类
{
...
virtaul 返回值 方法名();
...
};
父子之间赋值:
父子之间指针互相指向:
1、父-》子:只能由基类指针指向子类(子类中有基类的一部分),也就是只能引用继承过来的基类成员
2、子-》父:不能由子类指针指向父类(因为父类中没有子类的新增部分)
抽象类:
应用: 头插法链表: InsertNode增加节点(插入头部) 删除节点DropNode 修改节点modifyNode 查找节点FindNode
尾插法链表: InsertNode增加节点(尾部) 删除节点DropNode 修改节点modifyNode 查找节点FindNode
struct Node
{
数据区
struct Node* next;//后驱指向
};
纯虚函数:只声明方法,但不实现方法
class 抽象类
{
public:
virtual 方法()=0; //纯虚函数:没有函数体
private:
成员变量;
};
//抽象类:只声明方法但不实现(定义)方法的类
注:抽象类的定义与非抽象类的定义一样,但有如下区别:
1、纯虚函数只能子类来实现
2、抽象类(有纯虚函数的类)是不能实例化。
3、如果子类也不去实现此纯属函数,此子类也是抽象类。
4、也是虚函数。
在子类中来实现纯虚函数:
class 子类:public 抽象类
{
public:
...
声明方法();
...
};
实现方法:
返回值 子类::方法()
{
}