map<int , vector <MaClasse> > MonNom;
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:
Code:
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;
} |
Le problème que je rencontre est de pouvoir utiliser les fonctions associé à vectors.
Par exemple :
Code:
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.
} |
L'erreur du compilateur est (pour visual studio 2008 ) :
Citation:
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)
Ceux qui voudrait dire selon moi que HashTable[cle] n'est pas considérée comme un Client.
De plus autre erreur mais avec une autre fonction :
Code:
1 2 3 4 5 6
| void Hash::ajouter(Client Cl)
{
int cle=Cl.cleHashage();
Clients[cle].push_back(Cl);
} |
le compilateur me donne comme erreur :
Citation:
Error 1 error C2558: class 'Client' : no copy constructor available or copy constructor is declared 'explicit'
Ca je ne comprend pas.
Merci d'avance,
Douls