#include <iostream> #include <vector> #include <algorithm> using namespace std; template <class T> T median(vector<T> v) { typedef typename vector<T>::size_type vec_sz;//注:关键字typename,说明vector<T>::size_type是一个类型。 vec_sz size=v.size(); if(size==0) { throw domain_error("空的集合!"); } sort(v.begin(),v.end()); vec_sz mid=size/2; return mid%2==0?(v[mid]+v[mid-1])/2:v[mid]; } template <class T> T max_New(const T& left,const T& right) { return left>right?left:right; } int main() { int a[8]={1,2,3,90,5,6,7,9}; vector<int> vi(a,a+8); cout<<median(vi); double b[4]={2.4,5,5.6,0.9}; vector<double> vd(b,b+4); cout<<endl<<median(vd); double num=max_New(3.36,6.26);//两个参数的类型必须相同。 cout<<endl<<num; /*string strs[]={"a","b","c"}; vector<string> vs(strs,strs+sizeof(strs)/sizeof(string)); cout<<endl<<median(vs);*/ //此处编译时报错,因为string不支持除法。 }