Probleme de hash_map avec les string

Signaler
Messages postés
50
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 juin 2006
-
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
-
Salut
J'ai besoin d'utiliser une table de hachage dans un programme mais lorsque je prend une cle de type string, il y a une erreur... (ca fonctionne avec une cle int ou float). Je comprend vraiment pas d'ou ca vien... Vla le code de test et l'erreur (j'utilise VC++ 7) :

------------------------------------------------------------------
#include
#include <hash_map>
#include <string>

//typedef std::hash_map HTable;
typedef std::hash_map<std::string, float> HTable;
HTable hTable;

int main()
{
using namespace std;

//int key;
std::string key;
float value;
cout<<"key"<<endl;
cin>>key;
cout<<"value"<<endl;
cin>>value;
hTable[key]=value;

cin>>key;
HTable::const_iterator place(hTable.find(key));
if(place !=hTable.end()){
cout<<key<<" : "<second<<endl;
}else{
cout<<key<<" unknow."<<endl;
}

system("pause");
return 0;
}
------------------------------------------------------------------
ERREUR :
------------------------------------------------------------------
c:\Programmes\Microsoft Visual Studio .NET\Vc7\include\xhash(38): error C2440: 'type cast' : cannot convert from 'const std::string' to 'size_t'
------------------------------------------------------------------

Si quelqu'un a une idee pour resoudre ce probleme...

5 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
ce code se compile sans erreur chez moi, même compilateur, seulement quelques warnings
Messages postés
50
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 juin 2006

OK...
Tu pourrais m'envoyer tes options du compilateur (Comand line) s'il te plait. Si ca vient pas de la, je sais pas ce que ca peut etre...

Vla les miennes :
/Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Gm /EHsc /RTC1 /MLd /Fo"Debug/" /Fd"Debug/vc70.pdb" /W3 /nologo /c /Wp64 /ZI /TP
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
/Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Gm /EHsc /RTC1 /MLd /Yu"stdafx.h" /Fp"Debug/hashmap.pch" /Fo"Debug/" /Fd"Debug/vc70.pdb" /W3 /nologo /c /Wp64 /ZI /TP

Quelques différences, c'est parce que j'ai utilisé les en-têtes précompilées, de toute facon j'ai crée un projet par défaut, et je n'ai changé aucune option
Messages postés
50
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 juin 2006

Merci, mais c'est pas ca, meme erreur... La, je comprend vraiment pas...
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
bj,

#include <hash_map>
est inconnu sur ma station, faut-il récupérer les stl qqpart?

j'ai VC6
et sans ça
le code suivant:
(au sein d'une classe mais ça ne doit rien changer)
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;



produit ces erreurs qui doivent venir du hash_map inconnu

c:\...\bhashtable.hpp(39) : error C2143: syntax error : missing ';' before '<'
c:\...\bhashtable.hpp(39) : error C2501: 'hash_map' : missing storage-class or type specifiers
c:\...\bhashtable.hpp(39) : error C2059: syntax error : '<'
c:\...\bhashtable.hpp(39) : error C2238: unexpected token(s) preceding ';'
C:\...\BHashTable.cpp(36) : error C2065: 'tableHash' : undeclared identifier
C:\...\BHashTable.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)

merci

Magic Nono: l'informagicien!