Долго работает функция distance С++

Есть код:

for (int i = 0; i < n; i++){
    cout << "i =  " << i << endl;
    cin >> q;
    cout << "q = " << q << endl;
    st.insert(q);
    cout << "inserted" << endl;
    curr_right += distance(st.lower_bound(q), st.begin());
    cout << "end of for\n";
}

При вводе такого теста

5
5 4 2 3 1

Последнее что выводит программа

q = 3
inserted

А дальше ничего не выводит и не заканчивается.

То есть вставка в set произошла но функция distance как-то странно себя ведёт.

В чем может быть проблема?


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

Автор решения: KoVadim

Функция distance принимает два итератора в "прямом порядке", то есть, вначале должен быть begin.

distance(st.begin(), st.lower_bound(q));

После такого изменения оно вроде работает. Если нет - приводите больше данных, хотя бы полный пример кода, а не огрызок.

→ Ссылка