Долго работает функция 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));
После такого изменения оно вроде работает. Если нет - приводите больше данных, хотя бы полный пример кода, а не огрызок.