ejemplo - set c++
¿Alguien puede recomendar un contenedor de reemplazo C++ std:: map? (4)
¿Tal vez Google SparseHash podría ayudarlo?
Los mapas son geniales para hacer las cosas con facilidad, pero son recuerdos y sufren problemas de almacenamiento en caché. Y cuando tienes un mapa en un bucle crítico, puede ser malo.
Así que me preguntaba si alguien puede recomendar otro contenedor que tenga la misma API pero use una implementación de vector o hash en lugar de una implementación de árbol. Mi objetivo aquí es intercambiar los contenedores y no tener que volver a escribir todo el código de usuario que se basa en el mapa.
Actualización: en cuanto al rendimiento, la mejor solución sería una fachada de mapa probada en un estándar :: vector
Puede usar std :: tr1 :: unordered_map, que ya está presente en la mayoría de las implementaciones de STL, y es parte del estándar C ++ 0x.
Aquí está su firma actual:
template <class Key,
class T,
class Hash = std::tr1::hash<Key>,
class Pred = std::equal_to<Key>,
class Alloc = std::allocator<std::pair<const Key, T> > >
class unordered_map;
Si su clave es de un tipo simple que puede ser comparada rápidamente y no tiene más de unos pocos miles de entradas, podría tener un mejor rendimiento simplemente colocando sus pares en un std::vector
e iterando para encontrar su valor.
Ver Loki :: AssocVector y / o hash_map (la mayoría de las implementaciones de STL tienen esta).