在函数模板的一对<>中可以包括两种类型的参数
类型模板参数和非类型模板参数类型模板参数指用typename or class 限定的参数,可将其视为类型说明符非类型模板参数是用确定数据类型指定的参数,与普通函数形参定义形式差不多,接下来用选择排序来体现这两种数组可以是任意类型,用类型参数设定但数组大小是整数类型,用非类型参数指定1 #include2 using namespace std; 3 template //类型参数,非类型参数 4 void Sort(T a[n]) 5 { 6 for(int i = 0;i < n;i++) 7 { 8 int p; 9 for(int j = i;j < n;j++)10 if(a[p] > a[j])11 p = j;12 int t = a[i];13 a[i] = a[p];14 a[p] = t;15 }16 }17 template 18 void display(T& a,int n)19 {20 for(int i = 0;i < n;i++)21 cout << a[i] << " ";22 cout << endl;23 }24 25 int main()26 {27 int m = 7;28 29 int a[] = { 3,2,1,5,7,4,6};30 char b[] = { 'a','c','b','d','h','f','e','g'};31 //sort (a);错误因为m是变量,非类型参数必须是确定值32 Sort (a);33 Sort (b);34 display(a, m);//正确m对应普通函数的形参35 display(b, 8);36 return 0;37 }