Где в функции 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_;
};

Ответы (0 шт):