Я новичок в использовании шаблонов C++. Мне нужно написать специализацию шаблона для моего проекта. Это простая функция Sum для ввода различных типов и вычисляет сумму между двумя итераторами. Первоначальная функция является общей и поэтому принимает аргумент шаблона. Специализация шаблона написана для Карт.C++ Template Function specialization error
#include <map>
#include <string>
template <typename T>
double Sum(T &it_beg, T &it_end) {
double sum_all = 0;
for(it_beg++; it_beg != it_end; it_beg++)
sum_all += *it_beg;
return sum_all;
};
template <>
double Sum(std::map<std::string, double> &it_beg, std::map<std::string, double> &it_end) {
double sum_all = 0;
for(it_beg++; it_beg != it_end; it_beg++)
sum_all += it_beg->second;
return sum_all;
};
, когда я пытаюсь запустить код, я получаю следующие ошибки
...\sum.h(21): error C2676: binary '++' : 'std::map<_Kty,_Ty>' does not define this operator or a conversion to a type acceptable to the predefined operator
1> with
1> [
1> _Kty=std::string,
1> _Ty=double
1> ]
Я признателен, если кто-то может дать мне подсказку! благодаря
Что-то не так с вашими петлями. – erip
post fix increment operator не определен для std :: map ваш тип параметра должен быть std :: map :: iterator для приращения для работы. –
Да. Я только это заметил. Спасибо за ваш комментарий. – Hamed