Intanto grazie per l'aiuto, ma la ricerca tu la fai direttamente sulle stringhe anzichè sulle hash? Usando le hash anzichè le stringhe, la ricerca, inserimento dovrebbe essere molto più veloce, perchè un conto è inserire/cercare una parola di 100 lettere, un conto è un hash di max 8 numeri. Il ruolo delle hash è questo, velocizzare il tutto, il programma mi funziona, sto cercando di trovare un modo per renderlo più veloce.
Io mio collo di bottiglia diciamo, che mi faceva perdere un po' di tempo, era nell'aggiornare il grup_id di map<hashkey,grup_id> quando dovevo unire. Infatti, mettiamo il caso dovevo spostare tutto il gruppo1 in gruppo3, dovevo andare ad aggiornare tutti i grup_id delle hash del gruppo1 e dirgli che ora sono in gruppo3. Quello che vorrei capire è se c'è un metodo, che anzichè avere map<hashkey,grup_id>, con grup_id che sarebbe un int alla fine, un map<hashkey,puntatore*>, cosi quando gli dico vedi che puntatoreGruppo1 è diventato puntatoreGruppo2, non devo andare ad aggiornarli uno ad uno, ma li aggiorna direttamente siccome è cambiato l'indirizzo di puntatoreGruppo1.