По какой-то причине следующий код не работает. Вы не можете просто стереть reverse_iterator с помощью метода base().
#include <set>
#include <iostream>
int main()
{
std::set<int> setOfInts;
setOfInts.insert(1);
setOfInts.insert(2);
setOfInts.insert(3);
std::set<int>::reverse_iterator rev_iter = setOfInts.rbegin();
std::set<int>::reverse_iterator nextRevIter = setOfInts.rbegin();
++nextIter;
while ( rev_iter != setOfInts.rend())
{
// Find 3 and try to erase
if (*rev_iter == 3)
{
// SEGFAULT HERE
setOfInts.erase( rev_iter.base());
}
rev_iter = nextRevIter;
++nextRevIter;
}
}
Как правильно все это делать? Учитывая обратный_источник, который соответствует чему-то, что вы хотите стереть, как его стереть?
Примечание. Устранение не приведет к обратному обращению. Он хочет настоящую вещь.