Me gustaría ver un ejemplo simple de cómo sobrescribir stdext :: hash_compare correctamente, para definir una nueva función hash y un operador de comparación para mi propio tipo definido por el usuario. Estoy usando Visual C++ (2008).Cómo usar stdext :: hash_map?
7
A
Respuesta
1
Aquí tiene, ejemplo de MSDN
8
Ésta es la forma en que puede hacerlo
class MyClass_Hasher {
const size_t bucket_size = 10; // mean bucket size that the container should try not to exceed
const size_t min_buckets = (1 << 10); // minimum number of buckets, power of 2, >0
MyClass_Hasher() {
// should be default-constructible
}
size_t operator()(const MyClass &key) {
size_t hash_value;
// do fancy stuff here with hash_value
// to create the hash value. There's no specific
// requirement on the value.
return hash_value;
}
bool operator()(const MyClass &left, const MyClass &right) {
// this should implement a total ordering on MyClass, that is
// it should return true if "left" precedes "right" in the ordering
}
};
Entonces, sólo puede utilizar
stdext::hash_map my_map<MyClass, MyValue, MyClass_Hasher>
+0
Creo que el operador() s debe ser 'const' funciones o MSVC2005 generará error c3849 – avee
0
Yo prefiero usar una función no miembro .
El método ampliado en el artículo de la documentación de Boost Extending boost::hash for a custom data type parece funcionar.
Cuestiones relacionadas
- 1. Cómo usar stdext :: hash_map donde la clave es un objeto personalizado?
- 2. ¿Puedo usar una variable miembro como clave para hash_set/hash_map?
- 3. ¿Vale la pena usar std :: tr1 en producción?
- 4. Diferencia entre hash_map y unordered_map?
- 5. Me gustaría ver un ejemplo en C++ hash_map
- 6. No se puede encontrar hash_map cabecera en Mac OS X
- 7. 'hash_map' no se ha declarado en este ámbito con g ++ 4.2.1
- 8. Cómo usar org.netbeans.swing.outline?
- 9. Android: cómo usar CursorAdapter?
- 10. ¿Cómo usar MySQL DECIMAL?
- 11. ¿Cómo usar RowStatus?
- 12. Android: cómo usar SectionIndexer
- 13. MySQL: cómo usar COALESCE
- 14. ¿Cómo usar Android ViewSwitcher?
- 15. cómo usar json_encode
- 16. Cómo usar NSTrackingArea
- 17. Cómo usar boost :: crc?
- 18. Delphi Cómo usar TGridPanel
- 19. Cómo usar un WSDL
- 20. Cómo usar sprof?
- 21. Android cómo usar Environment.getExternalStorageDirectory()
- 22. Cómo usar Deblector?
- 23. Cómo usar los símbolos + =, * =, - =
- 24. ¿Cómo usar ConcurrentLinkedQueue?
- 25. Cómo usar GtkTreeView correctamente
- 26. Cómo usar NSCache
- 27. cómo usar finalmente
- 28. Cómo usar TextAction
- 29. Cómo usar kCTSuperscriptAttributeName?
- 30. ¿Cómo usar cepstral?
Ese ejemplo no sobrecarga la función hash. – batty