Probleme aec une hash_map

Signaler
Messages postés
3
Date d'inscription
vendredi 26 mai 2006
Statut
Membre
Dernière intervention
3 janvier 2009
-
Messages postés
78
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
23 avril 2010
-
lu

voila mon probleme est tres simple mais est tres incomprehensible :

typedef __gnu_cxx::hash_map Int2stat;
Int2stat InodeTable;
InodeTable->insert(make_pair(5, j));
cout << InodeTable->end()->first << endl; // cette instruction plante

resultat : erreur de segmentation

voila merci

3 réponses

Messages postés
3
Date d'inscription
vendredi 26 mai 2006
Statut
Membre
Dernière intervention
3 janvier 2009

bon j'ai oublié d'ajouter au post ceci :

struct stat_p j;
//initialisation

entre la 2eme ligne et la troisieme
m'enfin change rien
Messages postés
3
Date d'inscription
vendredi 26 mai 2006
Statut
Membre
Dernière intervention
3 janvier 2009

a aussi me suis trompé en recopiant  ligne

InodeTable.insert(make_pair(5, j));
cout << InodeTable.end()->first << endl;
Messages postés
78
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
23 avril 2010

A noter que InodeTable->end() renvoie l'élément après le dernier élément de la hash_map donc faire :

  InodeTable.end()->first revient à dire que tu pointes sur la clé pointée par ce qu'il y a après le dernier élément de la hash_map (qui vaut soit NULL soit n'importe quoi donc c'est mauvais en tous les cas, d'ou ton erreur de segmentation ^^)

tu devrais soit faire :
InodeTable.begin()->first(); // ceci récupère le premier élément de ta hash_map
ou bien si tu veux récupérer la derniere valeur dans la hash_map :
InodeTable.rbegin()->first();

A toi de voir ce que tu veux vraiment faire ;)

Happy coding ;)

++

Mess with the best, die like the rest