关于迭代器作为模板函数的形参的问题
例如:
有函数模板
template<typename T1, typename T2>
T2 Sum(typename map<T1, T2>::iterator iter1, typename map<T1, T2>::iterator iter2)
{
T2 sum = 0;
map<T1, T2>::const_iterator iter;
for (iter = iter1; iter != iter2;iter++)
sum += iter->second;
return sum;
}
----------
//**在主函数中,将map的T2类型的值求和。**
int main(){
map<string, double> map1; //create a map
map1["No1"] = 98.5; //set each element
map1["No2"] = 89.5;
map1["No3"] = 85;
//Sum(map1.begin(), map1.end());//模板函数不能推断T1和T2类型,必须指定显示模板实参,如下:
cout << Sum<string,double>(map1.begin(), map1.end());//具体详见C++ primer 603页
}