template函数,template函数怎么用
template函数要怎么调用呢C++
template并不是一个函数,而是用来声明模板的关键字,为了泛型编程。
另外你min方法是作用在vector上的,不能对intArray求min。程序应该这么写
//声明如下,最好别取min这个名字,c++里已经有min的宏定义
template class elemType
elemType mymin( elemType *first, elemType *last);
//
int main()
{
int intArray[] = {5, 10, 7, 9, 1, 4, 2},
N = sizeof(intArray)/sizeof(int);
int minInt = mymin(intArray, intArray+N); //调用时参数是首尾指针
cout minInt;
}
//函数实现
template class elemType
elemType mymin( elemType *first, elemType *last)
{
int minElem = *first;
while(++first != last)
{
if(minElem *first)
minElem = *first;
}
return minElem;
}
怎么用template函数
template并不是一个函数,而是用来声明模板的关键字,为了泛型编程。
另外你min方法是作用在vector上的,不能对intArray求min。程序应该这么写
//声明如下,最好别取min这个名字,c++里已经有min的宏定义
template class elemType
elemType mymin( elemType *first, elemType *last);
//
int main()
{
int intArray[] = {5, 10, 7, 9, 1, 4, 2},
N = sizeof(intArray)/sizeof(int);
int minInt = mymin(intArray, intArray+N); //调用时参数是首尾指针
cout minInt;
}
//函数实现
template class elemType
elemType mymin( elemType *first, elemType *last)
{
int minElem = *first;
while(++first != last)
{
if(minElem *first)
minElem = *first;
}
return minElem;
}
template 到底是什么意思啊?求解......................
这是建立模板的固定形式,template即模板,class指类别,T是类别的统称,可以使用的数据类型有int、char,float,double等等。
举个例子:
template typename T
T min( T a, T b )
{
return a b ? b : a;
}
这个 max 函数就是一个模板函数,它可以传入一个 “类型”的参数,以便实现任意类型求最小值的效果。
扩展资料:
函数模板的定义:
函数模板的声明是在关键字 template 后跟随一个或多个模板在尖括弧内的参数和原型。与普通函数相对,它通常是在一个转换单元里声明,而在另一个单元中定义,可以在某个头文件中定义模板。例如:
// file max.h
#ifndef MAX_INCLUDED
#define MAX_INCLUDED
template class T
T max(T t1, T t2)
{
return (t1 t2) ? t1 : t2;
}
#endif
定义 T 作为模板参数,或者是占位符,当实例化 max()时,它将替代具体的数据类型。max 是函数名,t1和t2是其参数,返回值的类型为 T。可以像使用普通的函数那样使用这个 max()。编译器按照所使用的数据类型自动产生相应的模板特化,或者说是实例:
int n=10,m=16;
int highest = max(n,m); // 产生 int 版本
std::complex c1, c2;
//.. 给 c1,c2 赋值
std::complex higher=max(c1,c2); // complex 版本
参考资料来源:百度百科—函数模板
如图,c++里为什么template还能这样用啊?为什么template尖括号里有变量?(template)
模板有类型模板和非类型模板两种,你举的这种属于非类型模板。
类型模板类似于templateclass T,T是一种泛型类型,例如char、int、string或是自定义的类型A。类型模板函数templateclass T void fun(T a),将T实例化为int那么参数a的类型就是int,实例化为A那么参数a的类型就是A。
非类型模板templateint T同理,只不过它的泛型T不是类型而是int型常量,例如1、3、10。非类型模板的典型应用就是数组长度定义,众所周知int a[N]这种语句中N必须是一个编译期常量否则无法通过编译,要实现定义不同长度的数组,就可以使用templateint T void foo(){double a[T]}这样的写法,调用foo时必须传递一个编译期常量如10,如foo10(),即可在函数foo中创建一个长度为10的double数组。