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.