Ich weiß nicht, wie die Hash-Funktion in C++ verwenden, aber ich weiß, dass wir hash_map
verwenden können. Unterstützt g ++ das, indem man einfach #include <hash_map>
einfügt? Was ist ein einfaches Beispiel mit hash_map
?Ich würde gerne eine Hash-Map-Beispiel in C++
Antwort
Die aktuelle C++ Standard nicht über Hash-Karten, aber die kommenden C++ 0x-Standard der Fall ist, und diese sind bereits von g ++ in der Form von "ungeordnete Karten" unterstützt:
#include <unordered_map>
#include <iostream>
#include <string>
using namespace std;
int main() {
unordered_map <string, int> m;
m["foo"] = 42;
cout << m["foo"] << endl;
}
Um Diese Kompilierung zu erhalten, müssen Sie sagen, g ++, die Sie verwenden C++ 0x:
g++ -std=c++0x main.cpp
Diese Karten arbeiten ziemlich viel wie std :: map tut, außer dass stattdessen eine benutzerdefinierte operator<()
für Ihre eigenen Arten der Bereitstellung von , müssen Sie eine benutzerdefinierte Hash-Funktion - suitab bereitstellen Die Funktionen sind für Typen wie Integer und Strings vorgesehen.
+1: Sie sollten diese Antwort bearbeiten, um TR1 zu erwähnen, obwohl ... –
@Kornel Nein, sollte ich nicht. TR1 wurde nie ratifiziert - der Namespace tr1 ist nur eine Erweiterung, die ein Compiler bietet. Ich benutze es nie in meinem eigenen Code. –
@Neil, sooo, eine Person, die GCC 3.4, MSVC und andere Nicht-C++ 0x Compiler verwendet, sollte TR1 nicht verwenden, aber bitte warten Sie, bis C++ 0x Bibliothekserweiterungen sofort unterstützt werden? –
Wikipedia lässt nie nach unten:
hash_map eine Nicht-Standard-Erweiterung. unordered_map ist Teil von std :: tr1 und wird in den std-Namespace für C++ 0x verschoben. http://en.wikipedia.org/wiki/Unordered_map_%28C%2B%2B%29
#include <tr1/unordered_map>
erhalten Sie nächsten Standard C++ unique hash container. Verbrauch:
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"]);
C-Style-Ausgabe mit C++ - Stil-Container? Autsch! – Bill
Willkommen in der realen Welt :) –
Der Name akzeptiert in TR1 (und der Entwurf für den nächsten Standard) ist std::unordered_map
, wenn Sie also, dass zur Verfügung haben, ist es wahrscheinlich die, die Sie verwenden möchten.
Andere als die, es zu benutzen ist viel wie std::map
verwendet wird, mit der Maßgabe, dass, wenn/falls Sie die Einzelteile in einem std::map
durchqueren, sie kommen in der Reihenfolge von operator<
angegeben, aber für einen unordered_map, der Auftrag ist im Allgemeinen bedeutungslos.
- 1. Ich würde gerne eine einfache Teilzeichenfolge mit Shell-Skripten
- 2. Lernen C, würde gerne wissen, warum diese Lösung funktioniert
- 3. Ich würde gerne wissen, was mit diesem Code falsch ist
- 4. Ich würde gerne nach einfacher Verbindungstechnik für Django fragen
- 5. master..sysdatabases ist eine SQL Server-Syntax. Ich würde gerne wissen, ob mysql so etwas hat
- 6. Ich würde gerne wissen, wie ich ein ngCordova Plugin in IBM MobileFirst Studio-Projekt hinzufügen kann?
- 7. Ich würde gerne zu den Grundlagen von CS zurückkehren. Anregungen für Tutorials oder anwendungsorientiertes Referenzmaterial?
- 8. Wie würde ich eine Funktion als Parameter in C++ übergeben
- 9. Ich würde gerne einen Skalar zu nur einer Zeile einer Matrix hinzufügen
- 10. Ich würde gerne wissen, wie man 2 oder mehr Combobox Werte verbindet
- 11. JSLint meldet die unerwartete Verwendung von '&' und '|' - Ich würde gerne reinigen
- 12. Wenn man einen facebook-ähnlichen Button auf Rails 3 anklickt würde auch gerne eine Methode aufrufen
- 13. Mit simplexml_load_file würde ich gerne von Zeit differeniate und und 404 Fehlern
- 14. Ich würde gerne versuchen, diese LinkedList umzukehren, ohne getPreviousNode zu verwenden
- 15. Ich würde gerne wissen, ob es einen Weg mit Hibernate gibt, um eine programmatische Konfiguration von ColumnTransformer durchzuführen?
- 16. Wie würde man eine benutzerdefinierte GUI in C#
- 17. Ich habe einen Datensatz. Es hat maximale Spitzen, die ich gerne eliminieren würde. Wie mache ich das?
- 18. Wie würde ich ein neues NSWindow über Objective-C erstellen?
- 19. Wie würde ich eine verschachtelte Sortierung in MATLAB durchführen?
- 20. Wie würde ich eine C# -Delegattierungsfunktion an eine verwaltete C++ DLL übergeben?
- 21. Datatable.merge gerne beitreten
- 22. Wie würde ich eine Haskell-Typklasse in F # übersetzen?
- 23. Ich würde gerne wissen, wie kann ich Tab Leerzeichen nach einem Wort, so dass das Muster, das danach kommt, würde zueinander ausgerichtet werden
- 24. Wie würde ich diesen Delphi-Set-Code in C# konvertieren?
- 25. Wie würde ich dieses Krypto von C# zu konvertieren C
- 26. Ich mag würde einfach C-Port ++ Echo-Server zu C#
- 27. Was ist eine Map und wie würde ich eine in C++ verwenden?
- 28. Wie würde eine sdbm-Hash-Funktion in C# implementiert werden?
- 29. Bouncing Ball Programm Würde Ball gerne wieder oben erscheinen und wieder runter kommen
- 30. Wie würde ich eine verknüpfte Liste löschen?
@BlueRaja: Ja in der Tat führt die Verwendung zu so wunderbarer Verwirrung wie Leute glauben, dass 'hash_map' tatsächlich Teil von C++ ist. Ich denke, dass dies, wie jede andere programmbezogene Frage, hier auf SO zu Hause ist, nicht wahr? Google die Nutzung von Google zu erklären, ist eine Verschwendung von ihnen und unserer Zeit. Ihre, weil sie Tausende von ungenauen und unzuverlässigen Antworten durchforsten müssen, und unsere, weil wir dann alle ihre falschen Vorstellungen und schlechten Praktiken niederreißen müssen, wenn sie hierher kommen, um später Fragen zu stellen. – jalf
@jalf: Als wären die Antworten auf SO irgendwie garantiert genau und zuverlässig. –
Sie werden garantiert von anderen Programmierern gesehen und gewählt, was sie wesentlich vertrauenswürdiger macht als die meisten anderen, die ein Anfänger blind auf Google finden könnte. – jalf