bonjour,
Je cherche à créer une table à hachage externe(cette table doit contenir des informations sur des clients). Pour ce faire la seul solution que j'ai trouvé actuellement est de créer une map qui contient des vectors de type client: La déclaration devient alors map<int , vector <Client> > HashTable;
La déclaration de cette variable s'effectue dans une autre classe:
Le problème que je rencontre est de pouvoir utiliser les fonctions associé à vectors.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Classe Client { private: string nom; .... } Classe Hash { private: map<int , vector <Client> > HashTable; }
Par exemple :
L'erreur du compilateur est (pour visual studio 2008 ) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void Hash::afficher(Client Cl) { int cle=Cl.cleHashage(); cout << HashTable[cle].begin(); // L'opérateur << est surchargé dans la classe Client. }
Ceux qui voudrait dire selon moi que HashTable[cle] n'est pas considérée comme un Client.Error 1 error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::_Vector_iterator<_Ty,_Alloc>' (or there is no acceptable conversion)
De plus autre erreur mais avec une autre fonction :
le compilateur me donne comme erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void Hash::ajouter(Client Cl) { int cle=Cl.cleHashage(); Clients[cle].push_back(Cl); }
Ca je ne comprend pas.Error 1 error C2558: class 'Client' : no copy constructor available or copy constructor is declared 'explicit'
Merci d'avance,
Douls
Partager