Probleme aec une hash_map

nbpowa1 Messages postés 3 Date d'inscription vendredi 26 mai 2006 Statut Membre Dernière intervention 3 janvier 2009 - 3 janv. 2009 à 00:53
theneoiceman Messages postés 78 Date d'inscription lundi 14 avril 2003 Statut Membre Dernière intervention 23 avril 2010 - 5 janv. 2009 à 16:41
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

nbpowa1 Messages postés 3 Date d'inscription vendredi 26 mai 2006 Statut Membre Dernière intervention 3 janvier 2009
3 janv. 2009 à 00:55
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
0
nbpowa1 Messages postés 3 Date d'inscription vendredi 26 mai 2006 Statut Membre Dernière intervention 3 janvier 2009
3 janv. 2009 à 00:57
a aussi me suis trompé en recopiant  ligne

InodeTable.insert(make_pair(5, j));
cout << InodeTable.end()->first << endl;
0
theneoiceman Messages postés 78 Date d'inscription lundi 14 avril 2003 Statut Membre Dernière intervention 23 avril 2010
5 janv. 2009 à 16:41
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
0
Rejoignez-nous