Utilizzando l'++ hash_map STL C ...Come usare stdext :: hash_map dove la chiave è un oggetto personalizzato?
class MyKeyObject
{
std::string str1;
std::string str2;
bool operator==(...) { this.str1 == that.str1 ... }
};
class MyData
{
std::string data1;
int data2;
std::string etcetc;
};
come questo ...
MyKeyObject a = MyKeyObject(...);
MyData b = MyData(...);
stdext::hash_map <MyKeyObject, MyData> _myDataHashMap;
_myDataHashMap[ a ] = b;
ottengo un intero carico di errori. Qui ci sono i primi tre ...
Errore 1 Errore C2784: 'bool std :: operator < (const std :: _ Albero < _Traits> &, const std :: _ Albero < _Traits> &) ': non potevano dedurre modello argomento per 'const std :: _ Albero < _Traits> &' da 'const MyKeyObject' c: \ programmi \ Microsoft visual Studio 8 \ VC \ include \ funzionale 143
01.235.errore 2 Errore C2784: 'bool std :: operator < (const std :: basic_string < _Elem, _Traits, _Alloc> &, const _Elem *)': non poteva dedurre modello argomento per ' std const: : basic_string < _Elem, _Traits, _Alloc> & 'da 'const Tasking :: MyKeyObject' C: \ programmi \ Microsoft visual studio 8 \ VC \ include \ funzionale 143
errore 3 errore C2784:' bool std :: operator < (Const _Elem *, const std :: basic_string < _Elem, _Traits, _Alloc> &)': non poteva dedurre modello argomento per 'const _Elem *' dal 'const MyDataObject' C: \ Programmi \ Microsoft Visual Studio 8 \ VC \ include \ funzionale 143
...
Se ho impostato la chiave per qualcosa di semplice come un int tutto va bene.
Cosa sto sbagliando ?! Forse ho bisogno di fare qualcosa con i modelli?
C'è un modo migliore (più veloce?) Di accedere ai dati utilizzando un oggetto chiave personalizzato come questo?
'hash_map' è una vecchia estensione. Usa tr1's unordered_map', o Boost. – GManNickG