Actually this piece of code
#include <map>
#include <iostream>
using namespace std;
struct A
{
int a;
bool erase;
A(int a, bool erase):a(a),erase(erase){}
};
int main()
{
multimap<string, A> mmap;
mmap.insert(make_pair<string,A>(string("a1"), A(1,false)));
mmap.insert(make_pair<string,A>(string("a2"), A(2,true)));
mmap.insert(make_pair<string,A>(string("a3"), A(3,true)));
mmap.insert(make_pair<string,A>(string("a4"), A(4,false)));
for (multimap<string,A>::iterator it = mmap.begin(); it != mmap.end(); it++)
{
if (it->second.erase) mmap.erase(it);
}
for (multimap<string,A>::iterator it = mmap.begin(); it != mmap.end(); it++)
{
cout << it->first << ", " << it->second.a << ", " << it->second.erase << endl;
}
}
works fine for me.
:)