[STL] hash_map... Comment ça fonctionne ?

hash_map... Comment ça fonctionne ? [STL] - C++ - Programmation

Marsh Posté le 11-10-2005 à 19:01:01    

Salut à tous ! J'ai besoin d'utiliser les hash_map, mais hélas je suis vraiment novice là dedans...
Je voudrais faire un truc du style:
 
class Personne {
hash_map <int, string> _attributsPersonne;
[...]
}
 
void fonction() {
_attributsPersonne[crc32("nom" )] = "djardjar";
_attributsPersonne[crc32("prenom" )] = "beans";
}
 
J'ai donc créé une fonction de hachage crc32, mais hélas, le compilateur n'accepte pas la définition de hash_map.
Message d'erreur:
personne.h ISO C++ forbids declaration of `hash_map' with no type  
personne.h expected `;' before '<' token  
 
J'ai essayé avec les typename, mais ça fonctionne pas non plus (pas de classe template).
 
J'ai déjà lu les anciens sujets à ce propos, mais soit je n'y comprend rien, soit y'a pas ce que je veux...
 
Aidez moi SVP .... :) !

Reply

Marsh Posté le 11-10-2005 à 19:01:01   

Reply

Marsh Posté le 11-10-2005 à 19:47:07    

C'est bon ! J'ai trouvé ! Ca fonctionnait pas à cause du namespace !
Sur certains compilateurs, il faut utiliser using namespace __gnu_cxx; et <ext/hash_map>
 
voici le code pour détécter:
 
#ifdef __GNUC__
        #if __GNUC__ < 3
                #include <hash_map.h>
        #else
                #include <ext/hash_map>
                #if __GNUC_MINOR__ == 0
                        using namespace std;               // Pour GCC 3.0
                #else
                        using namespace __gnu_cxx;       // Pour GCC 3.1 et plus
                #endif
        #endif
#else      // Pour les autres compilateurs.
        using namespace std;
#endif
 
 
C'est bien, je m'aide tout seul !


Message édité par djar le 11-10-2005 à 19:50:12
Reply

Marsh Posté le 11-10-2005 à 19:49:34    

Il y a ici un exemple d'utilisation de l'implémentation Gnu avec un fonction de hachage sophitiquée.  
http://forum.hardware.fr/hardwaref [...] 0175-2.htm
D'autres implémentations sont plus simples car elles ne nécessitent pas de préciser la fonction de hachage.
Attention à la consommation mémoire des gros hash_map.


Message édité par el muchacho le 11-10-2005 à 19:53:54

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 11-10-2005 à 19:50:44    

utlise plutôt std::tr1::unordered_map<> présente dans gcc4

Reply

Marsh Posté le 11-10-2005 à 19:51:10    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed