10.C++模板

C++模板

C++的模板是多态的一种表现。

C++的模板有模板函数与模板类,模板类是由多个模板函数组成的。

什么是模板,当实际传入类型的时候才能确定处理的类型。类似于Java中的泛型。

示例:(求最大值)

Array.h

#include <iostream>
using namespace std;

template <class VType>//定义模板的类型为VType

class Array{
	private:
		VType *a;//定义一个指针
		int len;
	public:
		Array(VType *p,int ln){//构造函数
			a = p;
			len = ln;
		}
		//求最大值 
		VType max(){
			VType ret = a[0];
			for(int i = 1;i < len; i++){
				if(a[i] > ret){
					ret = a[i];
				}
			}
			return ret;
		} 
		//求最小值 
		VType min(){
			VType ret = a[0];
			for(int i = 1;i < len; i++){
				if(a[i] < ret){
					ret = a[i];
				}
			}
			return ret;
		} 
		//排序(选择排序)
		void sort(){
			VType ret;
			int k;
			for(int i = 0; i < len-1; i++){
				k = i;
				for(int j = i+1; j < len ;j++){
					if(a[k] > a[j]){
						k = j;
					}
				}
				ret = a[i];
				a[i] = a[k];
				a[k] =  ret;
			}
		} 
};

main.h

#include "Array.h"
int main(){
	int a[] = {10,20,50,11,30,88,60};
	//string s[] = {"string","deap","tea","deep","sleep"};
	char s[] = "hskadhksaffz"; 
	//cout << sizeof(a)/sizeof(a[0]);
	Array <int>arr(a,sizeof(a)/sizeof(a[0]));//使用时,需要传入指定的类型int
	cout << "a最大值为:"<< arr.max() << endl;
	cout << "a最小值为:"<< arr.min() << endl;
	//Array <string>arr2(s,sizeof(s)/sizeof(s[0]));
	Array <char>arr2(s,sizeof(s)/sizeof(s[0])-1);//使用时,需要传入指定的类型char
	cout << "s最大值为:"<< arr2.max() << endl;
	cout << "s最小值为:"<< arr2.min() << endl;
	cout << "排序:" << endl;
	arr.sort();
	arr2.sort();
	for(int i = 0;i< sizeof(a)/sizeof(a[0]); i++){
		cout << a[i] << " ";	
	}
	cout << endl; 
	for(int i = 0;i< sizeof(s)/sizeof(s[0])-1; i++){
		cout << s[i]  << " ";
	}
	return 0;
}
posted @ 2025-06-27 20:05  站着说话不腰疼  阅读(9)  评论(0)    收藏  举报