No sé cómo utilizar la función de hash en C++, pero sé que podemos utilizar hash_map
. ¿G ++ admite eso simplemente incluyendo #include <hash_map>
? ¿Qué es un ejemplo simple usando hash_map
?Me gustaría ver un ejemplo en C++ hash_map
Respuesta
El actual estándar de C++ no tiene mapas de hash, pero el próximo estándar de C++ 0x hace, y estos ya son compatibles con g ++ en forma de "mapas desordenadas":
#include <unordered_map>
#include <iostream>
#include <string>
using namespace std;
int main() {
unordered_map <string, int> m;
m["foo"] = 42;
cout << m["foo"] << endl;
}
Con el fin para obtener esta compilación, es necesario contar g ++ que está utilizando C++ 0x:
g++ -std=c++0x main.cpp
Estos mapas funcionan más o menos como std :: mapa hace, excepto que en lugar de proporcionar una costumbre operator<()
para sus propios tipos , debe proporcionar una función hash personalizada - suitab Las funciones se proporcionan para tipos como enteros y cadenas.
+1: debe editar esa respuesta para mencionar TR1 aunque ... –
@Kornel No, no debería. TR1 nunca fue ratificado: el espacio de nombres tr1 es solo una extensión que proporciona un compilador. Nunca lo uso en mi propio código. –
@Neil, muuuy, una persona usando GCC 3.4, MSVC y otros no-C++ 0x compiladores no deben usar TR1, pero gratiously esperar hasta que las extensiones de la biblioteca C++ 0x son compatibles fuera de la caja? –
Wikipedia nunca se deja abajo:
hash_map es una extensión no estándar. unordered_map es parte de std :: tr1, y se moverá al espacio de nombres std para C++ 0x. http://en.wikipedia.org/wiki/Unordered_map_%28C%2B%2B%29
#include <tr1/unordered_map>
obtendrá la siguiente norma C++ unique hash container. Uso:
std::tr1::unordered_map<std::string,int> my_map;
my_map["answer"] = 42;
printf("The answer to life and everything is: %d\n", my_map["answer"]);
Salida de estilo C con contenedores de estilo C++? ¡Ay! – Bill
Bienvenido al mundo real :) –
El nombre aceptado en TR1 (y el proyecto para el próximo estándar) es std::unordered_map
, por lo que si usted tiene la disponible, es probable que sea el que usted desea utilizar.
Aparte de eso, su uso es muy parecido a usar std::map
, con la condición de que cuando/si se recorre los elementos de una std::map
, salen en el orden especificado por operator<
, pero para un unordered_map, el orden es generalmente sin sentido.
- 1. Me gustaría entender 6NF con un ejemplo
- 2. Cómo usar stdext :: hash_map?
- 3. Django: Antes de actualizar un modelo, me gustaría "ver" sus atributos anteriores
- 4. Me gustaría controlar Form1 desde Form2
- 5. LINQ 'join' espera un igual pero me gustaría usar 'contains'
- 6. ¿Qué plugins de Rails te gustaría ver?
- 7. Me gustaría 410 un directorio completo - borré mi blog
- 8. Servicio web Asp.Net: me gustaría devolver el error 403 prohibido
- 9. ¿Existe un reemplazo adecuado para C++, cuando me gustaría escribir aplicaciones de procesamiento de video?
- 10. Me gustaría conocer algunas "mejores prácticas" para Erlang?
- 11. Servicio de Git: me gustaría que sea tan simple
- 12. ¿Qué características te gustaría ver en un juego de programación de DSL?
- 13. Diferencia entre hash_map y unordered_map?
- 14. Me gustaría una explicación de un comportamiento en Ruby que encontré en los Koans
- 15. ¿Qué tutoriales te gustaría ver sobre el uso de Backbone.js?
- 16. Me gustaría crear algunos valores predeterminados para mis archivos .hgignore en TortoiseHG/Mercurial
- 17. ¿alguien me puede dar un ejemplo de Two_line_list_item en Android?
- 18. Un poco de advertencias molestas que todavía permiten que la aplicación funcione, pero me gustaría eliminar
- 19. Me gustaría implementar una mitad UITableView medio MapView UIView con un botón en el medio
- 20. Algoritmos para encontrar cosas que a un usuario le gustaría según otros usuarios. Me gusta
- 21. ¿Qué le gustaría ver en el libro de seguridad ASP.NET de un principiante?
- 22. ¿A la gente le gustaría un convertidor Flash to C#?
- 23. Me gustaría una recomendación para un libro sobre Rich Client Platform (RCP) de Eclipse
- 24. me gustaría ejecutar un comando a través de ssh de una caja de Windows que se ejecuta utilizando C#
- 25. Estoy comenzando un nuevo proyecto con Zend Framework y me gustaría algunos recursos para ayudarme
- 26. Me gustaría aplicar una expresión regular de manera eficiente a un archivo completo
- 27. ¿Me muestra un ejemplo simple de Oracle Streams?
- 28. ¿Un ejemplo de prueba unitaria en C#?
- 29. Presionar Escape en Firefox mata mis solicitudes de Ajax. Me gustaría evitar esto
- 30. ver un archivo docx en C# .NET
@BlueRaja: Sí, por supuesto, el uso de las que conduce a tal confusión maravilloso como la gente creer que 'hash_map' es en realidad parte de C++. Creo que esto, como cualquier otra pregunta relacionada con la programación, está en casa aquí en SO, ¿no? Decirle a la gente que use Google es una pérdida de ellos y de nuestro tiempo. La suya porque tienen que examinar miles de respuestas inexactas y poco confiables, y la nuestra porque tenemos que derribar todos sus conceptos erróneos y malas prácticas cuando vienen aquí para hacer preguntas más adelante. – jalf
@jalf: como si las respuestas en SO estuvieran garantizadas de alguna manera como precisas y confiables. –
Están garantizados para ser vistos y votados por otros programadores, lo que las convierte en un infierno de mucho más confiable que la mayor parte de lo que un principiante puede encontrar ciegamente la búsqueda en Google. – jalf