Table de hashage ?? [Résolu]

Signaler
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
-
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
-
Bj

je souhaite avoir une table associant une liste de chaine clefs à d'autres chaines plus longues

chargées une seule fois, au démarrage

je pensais utiliser les hash_map des stl, mais apparemment, les stl ne sont pas dispo sur mon poste (#include <hash_map> produit une erreur)

quelle autre solution aurait-on ?

Merci

Magic Nono: l'informagicien!

14 réponses

Messages postés
122
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
27 février 2007
1
Il y a une excellente lib libre, c'est pas en c++ mais en bidouillant tu peux en faire une dll que tu pourras appeller

http://users.footprints.net/~kaz/kazlib.html
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
ben vu que la stl ne fonctionnais po sur ce poste,
je l'ai recrée de tte piece spécifiquement pr ce qui ns interessait ici

=>

http://www.cppfrance.com/code.aspx?ID=25352

dc : merci à ts & je V reparcourir les sites sités histoire de l'améliorer

@+

Magic Nono: l'informagicien!
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
j'ai trouver à la downloader

après avoir rajouter l'include adéquat & le chemin ds le prj voici les nouvelles erreurs :

...\stl\stl_vector.h(174) : warning C4097: typedef-name '_Base' used as synonym for class-name 'vector<_Tp,_Alloc>::_Vector_base<_Tp,_Alloc>'
        ...\stl\stl_vector.h(496) : see reference to class template instantiation 'std::vector<_Tp,_Alloc>' being compiled
...\stl\stl_vector.h(189) : warning C4097: typedef-name '_Base' used as synonym for class-name 'vector<_Tp,_Alloc>::_Vector_base<_Tp,_Alloc>'
        ...\stl\stl_vector.h(496) : see reference to class template instantiation 'std::vector<_Tp,_Alloc>' being compiled
...\stl\stl_vector.h(190) : warning C4097: typedef-name '_Base' used as synonym for class-name 'vector<_Tp,_Alloc>::_Vector_base<_Tp,_Alloc>'
        ...\stl\stl_vector.h(496) : see reference to class template instantiation 'std::vector<_Tp,_Alloc>' being compiled
...\stl\stl_vector.h(191) : warning C4097: typedef-name '_Base' used as synonym for class-name 'vector<_Tp,_Alloc>::_Vector_base<_Tp,_Alloc>'
        ...\stl\stl_vector.h(496) : see reference to class template instantiation 'std::vector<_Tp,_Alloc>' being compiled
...\stl\stl_vector.h(192) : warning C4097: typedef-name '_Base' used as synonym for class-name 'vector<_Tp,_Alloc>::_Vector_base<_Tp,_Alloc>'
        ...\stl\stl_vector.h(496) : see reference to class template instantiation 'std::vector<_Tp,_Alloc>' being compiled
...\stl\stl_vector.h(193) : warning C4097: typedef-name '_Base' used as synonym for class-name 'vector<_Tp,_Alloc>::_Vector_base<_Tp,_Alloc>'
        ...\stl\stl_vector.h(496) : see reference to class template instantiation 'std::vector<_Tp,_Alloc>' being compiled
...ashtable.hpp(40) : error C2143: syntax error : missing ';' before '<'
...ashtable.hpp(40) : error C2501: 'hash_map' : missing storage-class or type specifiers
...ashtable.hpp(40) : error C2059: syntax error : '<'
...ashtable.hpp(40) : error C2238: unexpected token(s) preceding ';'
...ashTable.cpp(36) : error C2065: 'tableHash' : undeclared identifier
...ashTable.cpp(36) : error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'const class BString' (or there is no acceptable conversion)



Magic Nono: l'informagicien!
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
tes sur que c'est comptpatible avec ta stl ?
et j'ai verifié, hash_map ne fais pas partie du standard, doit y avoir des package ou autre
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
nan, je suis sur de rien

ce que j'ai trouvé est sur cette ref:
http://www.sgi.com/tech/stl/table_of_contents.html

doc & download...

Magic Nono: l'informagicien!
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
hash_map à la limite je m'en fou, je ve qqch arrivant au résultat,
mm limité à des char*, ça ne me dérange po, au contraire...

Magic Nono: l'informagicien!
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
implemente ca avec vector et string, ca doit pas etre trop dur
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
saoul la stl et autres std

voici ma soluce

#include "BString.hpp"
#include "liste/BListeIndir.hpp"
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//#include <hash_map>
#include < utility >

//tmp en attendant mieux!!!
class BPaire
{
public:
BString* getPValeur();
BPaire(){PB1("BPaire NOK");}
BPaire(const BString& cle,const BString& val):clef(cle),valeur(val){}

bool operator<(const BPaire& in){return clef
struct eqstr
{
bool operator()(const char* s1, const char* s2) const  {    return strcmp(s1, s2) == 0;  }
};
  hash_map<const char*, <const char*, hash<const char*>, eqstr> tableHash;
//2e essai, stl tjs
// http://www.sgi.com/tech/stl/PairAssociativeContainer.html
// là du coup, je suis po sur qu'il yt ai hashage mé bon...

  pair<const string,const string> tableHash;
  /*
puis vector...
  po mieu
*/

//solution par défaut
BListeIndirtableHash;

};


avec les BListeIndir deja publiées

certes, y a plus de haschage ni rien mé ça ira en attendant mieu

merci de poursuivre...

++

Magic Nono: l'informagicien!
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
je C, y a po le #endif

ceci est une soluce temporaire, L fonctionne bien sur mais est loin d'etre satisfaisant,
voila pourquoi ce n'est pas validé !

Donc si qqn voit comment faire fonctionner hash_map
ou possede toute autre bibli remplissant cette fonction
qu'il n'hésite po a rajouter un post...

Magicalement!
Messages postés
1267
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
28 février 2007
3
Ben il me semble plutôt que le header de la STL n'est pas <hash_map> mais <map> ^^

http://www.yrl.co.uk/~phil/stl/stl.htmlx#Map_and_Multimap
http://cplus.about.com/library/weekly/aa120103e.htm

(fruit d'une recherche de 5 mi nsur Google ^^).

Sinon si ça existe pas (ce qui m'étonnerait BEAUCOUP), ça doit être certainement géré dans la librairie Boost (www.boost.org).

Patience et longueur de temps font plus que force
ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
ouai j'avais deja regarder dans boost, mais me semble pas avoir vu
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
le include, je l'ai trouvé sur un autre post:
http://www.cppfrance.com/forum.v2.aspx?ID=212302

sinon, G po trouvé sur boost

'ci à vs, ++

Magic Nono: l'informagicien!
Messages postés
1267
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
28 février 2007
3
Oups, ben je me disais que ça devait être dans Boost masi apparemment pas...
C'est donc que ça doit déjà être dans la STL te qu'ils ne l'ont pas reprogrammé je pense ^^
Magic_Nono >> t'es allé voir sur les sites que j'ai mis? Il me semble bien que c'est la classe std::map...

Patience et longueur de temps font plus que force
ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/