Я работаю над проблемой на тему итераторов STL, вопрос заключается в следующем: создает функцию Sum(), которая вычисляет сумму между двумя итераторами.Как использовать 2 итератора для вычисления суммы функции <строка, двойная>
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' должен быть явно передан. Наивная передача в' begin() 'и' end() 'из изменчивой карты будет терпеть неудачу. –
@SamVarshavchik Вы правы, исправлены – Slava