Добрый день
Казалось бы - ну "простейшая", "элементарная" (что впрочем не одно и то же) задачка, а мне почему-то пришлось пыхтеть, напрягаться
Наверное я плохо понимаю std. Нужно всего-то написать 2 ф-ции
C++ (Qt)
int GetNext( const std::vector<double> & src, double value, double tolerance );
int GetPrev( const std::vector<double> & src, double value, double tolerance );
Найти индекс эл-та со значением ближайшим к value, но чтобы при этом выполнялось условие
vec[index] - value > tolerance // для GetNext
value - vec[index] > tolerance // для GetPrev
Если индекс невалиден, то вернуть -1. Примеры
C++ (Qt)
vec = { 0, 1, 2, 3, 4, 5 };
GetNext(vec, 3.7, 0.1) = 4
GetPrev(vec, 3.7, 0.1) = 3
GetNext(vec, 3.999, 0.1) = 5
GetPrev(vec, 3.999, 0.1) = 3
GetNext(vec, 4.999, 0.1) = -1
GetPrev(vec, 4.999, 0.1) = 4
Др словами юзер может "шагать" по эл-там вектора вперед и взад, учитывая при этом погрешность value
Да, ну и конечно без перебора (мы же культурные люди)
Спасибо