群体类和群体数据的组织
- 群体数据:自定义类型的数据(由多个基本类型或自定义类型的元素组成的);群体类:按照面向对象的方法将数据与操作封装起来;群体:线性群体(栈和队列)和非线性群体。
- 两类经典算法:排序(分类/整理);查找。
模板
- 可以用于实现参数化多态
函数模板
- 可用于创作一个通用类型的函数,以支持多种不同形参,进一步简化重载函数的函数体设计。无需显式实例化。
- 定义形式:
template<class/typename参数类型表>//若>后有class,之ing可以接收一个类模板名作为参数。
类型名 函数名(参数表)
{
函数体的定义
}
//举例
#include<iostream>
using namespace std;
template<typename T>
T abs(T x)
{
return x < 0 ? -x : x;
}
int main()
{
int n = -6;
cout << abs(n) << endl;//用实际类型取代虚拟,实例化。
return 0;
}
- 与普通函数的区别:
(1)函数模板在编译时不会生成任何目标代码,只有由模板生成的实例会;
(2)被多个源文件引用的函数模板,应当连同函数体一同放在头文件中,而不能像普通函数意义只将声明放在头文件中。
类模板
- 对不同类的公共性质的抽象,需要一种或多种类型参数,故也称作参数化类。
- 声明:
template<模板参数表>//模板参数表的形式为class T关键字class后的是类型参数;声明一个类模板,虚拟类型为T,T在以后将被一个实际的类型名取代。
//若需要在类模板以外定义其成员函数,需要加上以下形式:
//类型名 类名<模板参数标识符列表>::函数名(参数表)
class 类名
{
类成员声明
}
//建立对象时
模板名<模板参数表>对象名1,...,对象名n;
参考书籍:《清华大学计算机系列教材:C++语言程序设计(第4版)》
欢迎指正与讨论~