#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();