函数模板使用注意事项
1.自动类型推导,必须推导出一致的数据类型才能使用
template < typename T >
void mySwap ( T& a, T & b)
{
T temp = a;
a = b;
b = temp;
}
void test ( )
{
int a = 9 ;
int b = 8 ;
mySwap ( a, b) ;
cout << a << b << endl;
char c = 'h' ;
int n = 5 ;
}
2.模板必须要确定出 T 的类型,才能使用
template < typename T >
void func ( )
{
cout << "func 函数" << endl;
}
void test02 ( )
{
func < int > ( ) ;
}
总结:使用模板时必须确定出通用数据类型T 并且能够推导出一致的数据类型
示例:
# include <iostream>
# include <string>
using namespace std;
template < typename T >
void mySwap ( T& a, T& b)
{
T temp = a;
a = b;
b = temp;
}
template < typename T >
void mySort ( T array[ ] , int lenth)
{
for ( int i = 0 ; i < lenth; ++ i)
{
int min = i;
for ( int j = i + 1 ; j < lenth; ++ j)
{
if ( array[ j] < array[ min] )
{
min = j;
}
}
if ( min != i)
{
mySwap ( array[ i] , array[ min] ) ;
}
}
}
template < typename T >
void myPrint ( T array[ ] , int lenth)
{
for ( int i = 0 ; i < lenth; ++ i)
{
cout << array[ i] << "\t" ;
}
cout << endl;
}
void test03 ( )
{
char arrayChar[ ] = "kiuybca" ;
int nlenth = strlen ( arrayChar) / sizeof ( char ) ;
mySort ( arrayChar, nlenth) ;
myPrint ( arrayChar, nlenth) ;
int arrayInt[ ] = { 10 , 9 , 5 , 7 , 2 , 1 , 3 } ;
int nlenth2 = sizeof ( arrayInt) / sizeof ( int ) ;
mySort ( arrayInt, nlenth2) ;
myPrint ( arrayInt, nlenth2) ;
}
int main ( )
{
test03 ( ) ;
system ( "pause" ) ;
return 0 ;
}