Provato e non è quello, il problema è che quando fa il
for (std::map<int, Gruppi *>::iterator it = mapHash.begin(); it != mapHash.end(); ++it)
succede questo:
it=1 it1=1 it=2
it=it1? ok allora fai it=it2, ma cambia anche it1 che diventa come it2 quindi poi farà
it=1 it1=2 it=2
questo indice in mapHash è 1, dovrebbe diventare 2, ma siccome it1 è cambiato non fa la modifica