我正在研究一个关于STL迭代器主题的问题,问题是:创建一个计算两个迭代器之和的Sum()函数。如何使用2迭代器计算求和函数map <string,double>
template<class T1, class T2 >
double Sum<T1,T2>(map<T1,T2>& start, map<T1,T2>&end)
{
double sum = 0.0;
class map<T1,T2>::const_iterator i;
for (i = start; i != end; ++i)
{
sum += i->second;
}
return sum;
}
下面
是什么在我的主要():
map<string, double>::const_iterator map_StartIter =doubleMap.begin();
map<string, double>::const_iterator map_EndIter = doubleMap.end();
cout<<"(2 iterator) map Sum is "<< Sum(map_StartIter,map_EndIter) << endl;
它抛出一个错误说法错误C2768: '点心':非法使用显式模板参数
出了什么问题?
可以肯定的是,这里不能推导出模板参数,所以'const_iterator's必须被明确地传进来。从一个可变映射开始传递'begin()'和'end()'将会失败。 –
@SamVarshavchik你是对的,修复 – Slava