C++map用反向迭代器遍历删除元素为什么会崩溃


#include <iostream>
#include <map>

using namespace std;

int main() {
    map<int64_t, int64_t> mp({{1, 2}, {3, 5}, {2, 7}});
    for (auto rItr = mp.rbegin(); rItr != mp.rend(); ) {
        if (rItr->first == 3) {
            mp.erase((++rItr).base());
        } else {
            rItr++;
        }
    }
    return 0;
}

mp.erase((++rItr).base());这么删除不对啊。每次删除之前先用一个变量t 记录rItr的下一个值,然后删除rItr,然后rItr = t
或者每次erase(rItr)后,重置rItr,也就是让rItr = mp.rbegin();