Где в функции FindNearestFinish может произойти неопределенное поведение?
class RouteManager {
public:
void AddRoute(int start, int finish) {
data_[start].insert(finish);
data_[finish].insert(start);
}
int FindNearestFinish(int start, int finish) const {
const int MIN_DISTANCE = abs(start - finish);
auto tmp_set = data_.find(start);
if(tmp_set == data_.end()) return MIN_DISTANCE;
auto first = tmp_set->second.lower_bound(finish);
if(first == tmp_set->second.end()) return abs(*prev(first) - finish);
if(*first == finish) return 0;
if(first == tmp_set->second.begin()) return MIN_DISTANCE;
auto second = first; second--;
const int FIRST_DISTANCE = abs(*first - finish);
const int SECOND_DISTANCE = abs(*second - finish);
return min(FIRST_DISTANCE, SECOND_DISTANCE);
}
private:
map<int, set<int>> data_;
};