提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
当一组代码(函数、类)只是参数类型改变,逻辑不变时,就可以考虑使用模板,将一组代码整合成一个代码。
函数模板:实现数据类型的参数化,将函数的形式参数的类型设计成可以变化的参数 模板实例化:编译器根据实际参数类型确定模板参数的类型,形成一个可以执行的函数。实例化的函数称为模板函数。
template <class T1, class T2, class T3> T3 calc(T1 a, T2 b){ return a+b; } int main(){ int a; char b; cin >> a >> b; cout << "a+b=" << calc<int, char, char>(a,b) << endl; return 0; }通常每个模板的形式参数都要在函数的形式参数表中至少出现一次,这样才能确定模板实际参数类型。如果没有出现,可以通过显示指定模板实参来解决
calc<int, char, char>(5,'a');输出’f’
calc<int, char, int>(5,'a');输出102
类模板定义
template <class T(模板的形式参数表)> calss 类名{……};类模板的成员函数定义
template <class T(模板的形式参数表)> 返回类型 类名<T>::函数名(形式参数表){ 函数体 }必须将成员函数定义为函数模板,即使成员函数没有必要定义为函数模板 类名必须包含其模板形式参数:类名< T >
不像函数模板,使用类模板使时,编译器无法更具对象定义的过程确定模板参数的类型,需要用户明确指出模板形式参数的类型。
类模板的对象的定义
类模板名<模板的实际参数表> 对象表; Array<int> array1;模板参数大多是用来代表还没有确定的对象类型,这种参数又称为类型参数。 但是模板参数还可以是非类型参数,例如整型数或实型数。非类型参量用常量表达式作为实参,必须是编译时的常量。
template <class T, int low, int high> class Array{……} Array<int, 3, 10> array1;模板参数也可以指定默认值。在定义对象时,可以指定模板实参,使用默认值。
template <class T = int> class Array{……} Array<> array1;提示:这里对文章进行总结: 例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。