0
点赞
收藏
分享

微信扫一扫

模板(template)的相关操作

.模板(template)

C++另一种编程思想称为泛型编程,主要利用的技术就是模


//两个整形交换函数(普通)

void swapInt(int &a,int &b)

{

 int temp=a;

 a=b;

 b=temp;

}

//函数模板

template<typename T>// 声明一个模板,告诉编译器后面代码中紧跟着的T不要报错,T是一个通用数据类型

void mySwap(T &a,T &b)

{

   T temp=a;

   a=b;

   b=temp;


}

void test1()

{

 int a=10;

 int b=20;

 //利用模板实现交换

 // 1.自动类型推导

 mySwap(a,b);

//2.显示指定类型

mySwap<int>(a,b);

cout<<"a="<<a<<endl;

cout<<"b="<<b<<endl;

}

int main()

{

test1();

system("pause");


return 0;

}

@函数模板注意事项

typename可以替换成class

即template<class T>

//1.自动类型推导,必须推导出一致的数据类型T才可以使用

void test1()

{

 int a=10;

 int b=20;

 char c='c';

 //利用模板实现交换

 // 1.自动类型推导

   mySwap(a,b);

   mySwap(a,c);

cout<<"a="<<a<<endl;//错误,数据不一致

cout<<"c="<<b<<endl;

}

//2.模板必须要确定出T的数据类型,才可以使用

template<class T>

void func()

{

 cout<<"func的调用"<<endl;

}

void test02()

{

func();//无法确定T的数据类型;//func<int>();

}


// 实现通用,对数组进行排序的函数

//排序算法(从打到小,选择排序)

//交换函数模板

template<class T>

void mySwap(T&a,t&b)

{

  T temp=a;

  a=b;

  b=temp;


}

template<class T>

void mySort(T arr[] ,int len)

{

 for(int i=0;i<len ;i++)

 {

 int max=i;//认定最大值的下标

 for(int j=i+1; j<len;j++)

 {

   //认定的最大值的下标比遍历出的数组要小

   if (arr[max]<arr[j])

   {

    max=j;//更新最大值的下标

   }

 }

   if(max!=i)

    {

    //交换max 和i元素

    mySwap(arr[max] ,arr[i]);

   }

 }


}



2.普通函数与函数模板的区别(能不能发生隐式转换)



int myAdd1(int a,int b)

{

return a+b;

}

void test1()

{

int a=10;

int b=20;

char c='c'

cout<<myAdd1(a,c)<<endl;//c在这里隐式转换为了整形数字;(隐式转换)

}

int main()

{

test1();

return 0;

}

*//希望对大家有帮助

举报

相关推荐

0 条评论