template函数,template函数怎么用

http://www.itjxue.com  2023-01-22 19:33  来源:未知  点击次数: 

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数组。

(责任编辑:IT教学网)

更多

推荐测评专题文章