Я пытаюсь усреднить ключи вокруг пика гистограммы.Итак, я сначала нахожу пик, а затем попытался добавить один и вычесть один из индекса пика, чтобы найти средний ключ вокруг пика.Я нахожу индекс, используя функцию расстояния.Однако я не могу найти правильное решение, потому что код не будет компилироваться.Может кто-нибудь, пожалуйста, помогите?
int iterator_distance;
for ( std::map<float, int>::iterator it = histogram_x.begin(); it != histogram_x.end(); it++) {
if (max_occurence.x <= it->second ) {
max_occurence.x = it->second;
max_voted.x = it->first;
iterator_distance = std::distance(histogram_x.begin(), it);
//std::cout << x.first << " histogram " << x.second << "endx\n";
}
}
// Average around the peak
if ( iterator_distance > 2 ) {
max_voted.x = (histogram_x.begin()+iterator_distance-1)->first + (histogram_x.begin()+iterator_distance)->first + (histogram_x.begin()+iterator_distance+1)->first;
}
Следующая ошибка.Ошибка говорит о том, что оператор плюс нельзя использовать с итераторами и с плавающей точкой.Но это мой вопрос, как я могу решить эту проблему?
error: no match for ‘operator+’ (operand types are ‘std::map<float, int>::iterator {aka std::_Rb_tree_iterator<std::pair<const float, int> >}’ and ‘int’)
max_voted.x = (histogram_x.begin()+iterator_distance)->first + (histogram_x.begin()+iterator_distance-1)->first;