Уравнивающие итераторы

0

Я столкнулся с некоторыми проблемами с set :: iterators в c++. У меня есть набор 2-D точек, и мне нужно повторять и сравнивать эти пункты три-три.

Моя мысль заключалась в том, чтобы использовать три циклы, увеличивая итераторы, один за другим. Но c++ дал мне ошибку, когда я попытался:

for (set<pair<double, double> >::iterator i = S.begin(); i != S.end(); i++){
    for (set<pair<double, double> >::iterator j = i+1; j != S.end(); j++){
        ...
    }
}

Изменение: ошибка была "error: no match for" operator+ в "i + 1"

Теги:
set
iterator

1 ответ

3
Лучший ответ

std :: set имеет двунаправленный итератор. Он не имеет такой операции, как итератор + целое число. Поэтому используйте вместо этого

for (set<pair<double, double> >::iterator j = std::next( i ); j != S.end(); j++){
  • 0
    Обратите внимание, что std::next() является функцией C ++ 11. Но вы также можете получить его от Boost, если вы еще не до C ++ 11.
  • 0
    Большое спасибо. Это работает.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню