Невозможно определить источник неопределенного поведения в цикле «Время, требуя помощи» - PullRequest
0 голосов
/ 28 октября 2019

У меня есть цикл while, который принимает вектор и должен объединять интервалы. Например,

Input: [[2,3],[2,2],[3,3],[1,3],[5,7],[2,2],[4,6]]
Output: [[1,3],[4,7]]

Другой пример:

Input: [[1,4],[4,5]]
Output: [[1,5]]

У меня есть фрагмент кода, который находит все общие интервалы, которые лежат рядом друг с другом, объединяет их, а затем просматривает следующуюэлемент в строке:

vector<vector<int>> merge(vector<vector<int>>& intervals) {
    sort(intervals.begin(), intervals.end(), 
         [](vector<int> A, vector<int> B){return A[0] < B[0];});

    int i{};
    while (i++ < intervals.size()) {
        while (intervals.size() >= 2 && intervals[i][1] >= intervals[i+1][0]) {
            intervals[i+1] = {min(intervals[i][0], intervals[i+1][0]),
                              max(intervals[i][1], intervals[i+1][1])};
            intervals.erase(intervals.begin() + i);
        }
        printResult(intervals);
    }
    return intervals;
}

Мой STDOUT следующий:

 [1 3 ]
 [4 6 ]
 [5 7 ]
Segmentation fault (core dumped)

Ответ должен быть

[1 3 ]
[4 7 ]

, но мой цикл while потерпел крах после первой итерации.

Я не уверен, почему это происходит, и буду признателен, если кто-нибудь скажет мне, в чем заключается проблема в моем коде.

Спасибо!

...