Wie lösche ich einen reverse_iterator aus einer stl-Datenstruktur?

Aus irgendeinem Grund schlägt der folgende Code fehl. Sie können einen reverse_iterator nicht einfach mit der base () -Methode löschen.

#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;
    }

}

Wie geht man richtig vor? Wenn Sie einen reverse_iterator haben, der einem zu löschenden Element entspricht, wie können Sie ihn löschen?

Hinweis, beim Löschen werden leider keine reverse_iterators verwendet. Es will die reale Sache.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage