Je ne sais pas comment utiliser la fonction de hachage en C++, mais je sais que nous pouvons utiliser hash_map
. Est-ce que g ++ supporte cela en incluant simplement #include <hash_map>
? Qu'est-ce qu'un exemple simple utilisant hash_map
?Je voudrais voir un exemple hash_map en C++
Répondre
La norme actuelle C++ n'a pas de cartes de hachage, mais la prochaine norme C++ 0x fait, et ceux-ci sont déjà pris en charge par g ++ sous la forme de « cartes à puces »:
#include <unordered_map>
#include <iostream>
#include <string>
using namespace std;
int main() {
unordered_map <string, int> m;
m["foo"] = 42;
cout << m["foo"] << endl;
}
Pour pour obtenir cette compilation, vous devez dire g ++ que vous utilisez C++ 0x:
g++ -std=c++0x main.cpp
Ces cartes fonctionnent à peu près comme std :: carte ne, sauf qu'au lieu de fournir une coutume operator<()
pour vos propres types , vous devez fournir une fonction de hachage personnalisée - suitab Les fonctions sont fournies pour les types comme les entiers et les chaînes.
+1: vous devriez éditer cette réponse pour mentionner TR1 si ... –
@Kornel Non, je ne devrais pas. TR1 n'a jamais été ratifié - l'espace de noms tr1 est juste une extension fournie par un compilateur. Je ne l'utilise jamais dans mon propre code. –
@Neil, sooo, une personne utilisant GCC 3.4, MSVC et d'autres compilateurs non-C++ 0x ne devrait pas utiliser TR1, mais attendre gratiously jusqu'à ce que les extensions de la bibliothèque C++ 0x soient supportées out of the box? –
Wikipédia ne déçoit pas:
hash_map est une extension non standard. unordered_map fait partie de std :: tr1, et sera déplacé dans l'espace de noms std pour C++ 0x. http://en.wikipedia.org/wiki/Unordered_map_%28C%2B%2B%29
#include <tr1/unordered_map>
vous obtiendrez le prochain standard C++ unique hash container. Utilisation:
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"]);
Sortie de style C avec des conteneurs de style C++? Aie! – Bill
Bienvenue dans le monde réel :) –
Le nom accepté dans TR1 (et le projet de la norme suivante) est std::unordered_map
, donc si vous avez cette disposition, il est probablement celui que vous voulez utiliser.
Autre que cela, son utilisation est beaucoup comme l'utilisation std::map
, à condition que lorsque/si vous parcourez les éléments dans un std::map
, ils sortent dans l'ordre indiqué par operator<
, mais pour un unordered_map, l'ordre est généralement sans signification.
- 1. hash_map plante en C++ stl
- 2. comment rechercher hash_map en C++?
- 3. hash_map et stdext :: hash_map?
- 4. Comment utiliser stdext :: hash_map?
- 5. Je voudrais sérialiser un fichier xml en objets Java
- 6. Est-ce que hash_map trie automatiquement [C++]?
- 7. C++ Lire le fichier dans hash_map
- 8. Je voudrais piéger quand l'UIEditor a fermé dans C#
- 9. Comment puis-je voir les bits d'un octet en C?
- 10. Je voudrais prévisualiser un document Word sur le formulaire
- 11. hash_map sur AIX?
- 12. J'ai un livre (Livres) Je voudrais stocker dans SQLite
- 13. Je voudrais savoir pour créer un youtube comme lecteur flash
- 14. Différence entre hash_map et unordered_map?
- 15. Git serve: Je voudrais que ce simple
- 16. Aide sur __gnu_cxx :: hash_map
- 17. Exemple Singleton en C++/CLI?
- 18. Je voudrais créer des sous-domaines Dynamiquement sous mon domaine en utilisant asp.net, C#?
- 19. Où puis-je trouver un exemple ZwCreateFile pour C++?
- 20. Je voudrais déplacer un élément vers la gauche en utilisant la boucle
- 21. Comment puis-je voir facilement le graphique C/C++ #include?
- 22. Comment utiliser SGI STL hash_map?
- 23. Puis-je sauter pour voir l'objectif écrit C d'Appcelerator Titanium?
- 24. Je veux utiliser Infocardapi.dll dans Delphi/WIN32, mais je voudrais un fichier d'en-tête pour cela
- 25. Détection de collision dans les STL hash_map
- 26. Tout générique en C# (voir code)
- 27. Quand est-ce que je voudrais utiliser NSPropertyMapping?
- 28. Vous cherchez un exemple Shell inverse de base en C (++)
- 29. Comment puis-je obtenir cet exemple en utilisant "param" en C# pour travailler?
- 30. Exemple de bibliothèque MPXJ en C#
@BlueRaja: Oui, en effet, cela conduit à une telle confusion que les gens croient que 'hash_map' fait réellement partie de C++. Je pense que cette question, comme toute autre question liée à la programmation, est ici à la maison ici sur SO, n'est-ce pas? Dire aux gens d'utiliser Google est une perte pour eux et pour notre temps. Ils doivent passer au crible des milliers de réponses inexactes et peu fiables, et les nôtres parce que nous devons ensuite abattre toutes leurs idées fausses et leurs mauvaises pratiques quand ils viennent ici pour poser des questions plus tard. – jalf
@jalf: comme si les réponses sur SO étaient en quelque sorte garanties d'exactitude et de fiabilité. –
Ils sont garantis d'être vus et votés par d'autres programmeurs, ce qui les rend beaucoup plus dignes de confiance que la plupart de ce qu'un débutant pourrait trouver aveuglément sur Google. – jalf