c++函数模板和类模板——DAY1

1.什么时候使用函数模板和;类模板:函数的业务逻辑一样,但函数类型参数不一样,为了方便程序员的编程。
template T相当于一个类型。template是告诉c++编译器,我要开始泛型编程了,不要随便报错。
函数模板的调用:
  1.显示类型调用
   myswap(x,y); <>表示要参数化的数据类型
  2.自动类型推导(不常用,不好用)直接调用函数
    例:myswap (x,y);
如下为函数模板的示例。

#include <iostream>
template<typename T>
myswap(T &a,T&b)
{
	T c;
	c=a;
	a=b;
	b=c;
}
int main(int argc, char** argv) {
	
	int a=1;
	int b=2;
	char c='i';
	char d='j';
	myswap<int>(a,b);
	myswap<char>(c,d);
	printf("a=%d,b=%d\n",a,b);
	printf("c=%c,d=%c\n",c,d);
	return 0;
}

运行结果:在这里插入图片描述


#include <iostream>
#include <cstring>
using namespace std;

//对字符数组  int数组进行排序
template <typename T,typename T2 >
int mySort(T *array, T2 size)
{
	T2 i, j ;
	T tmp;
	if (array == NULL)
	{
		return -1;
	}

	//选择  
	for (i=0; i<size; i++)
	{
		for (j=i+1; j<size; j++)
		{
			if (array[i] < array[j])
			{
				tmp = array[i];
				array[i] = array[j];
				array[j] = tmp;
			}
		}
	}
	return 0;
}

template <typename T, typename T2>
int myPrint(T *array, T2 size)
{
	T2 i = 0;
	for (i=0; i<size; i++)
	{
		cout << array[i] << " ";
	}
	return 0;
}

int main(int argc, char** argv)
{
	// int类型
// 	{
// 		int myarray[] = {11, 33,44, 33,22, 2, 3, 6, 9};
// 
// 		int size =  sizeof(myarray)/sizeof(*myarray);
// 		mySort<int, int> (myarray, size);
// 
// 		printf("排序之后\n");
// 		myPrint(myarray, size);
// 
// 	}

	//char 类型
	{
		char buf[] = "aff32ff2232fffffdssss";
		int len = strlen(buf);

		mySort<char, int>(buf, len);
		myPrint<char , int>(buf, len);

	}

	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41536360/article/details/88958656