Я столкнулся с некоторыми проблемами с 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"
std :: set имеет двунаправленный итератор. Он не имеет такой операции, как итератор + целое число. Поэтому используйте вместо этого
for (set<pair<double, double> >::iterator j = std::next( i ); j != S.end(); j++){
std::next()
является функцией C ++ 11. Но вы также можете получить его от Boost, если вы еще не до C ++ 11.