Wie Objekte einer Klasse in einem unordered_set gespeichert werden. Mein Programm muss häufig prüfen, ob ein Objekt in diesem ungeordneten_Satz vorhanden ist, und wenn dies der Fall ist, dann aktualisieren Sie dieses Objekt. Ich habe online nachgeschlagen, wie unordered_set zu verwenden ist, aber in den meisten Tutorials geht es darum, es in int, String-Typen zu verwenden. Also frage ich, wie man es im Unterricht benutzt? Wie definiert man eine Hash-Funktion, um die knoten_id im folgenden Beispiel den Schlüssel des ungeordneten_satzes zu machen? Vielen Dank.wie C++ ungeordnetes_set für Klasse zu verwenden?
#include <iostream>
#include <unordered_set>
using namespace std;
//how to define a hash function that makes node use node_id as key?
struct node
{
string node_id;
double value;
node(string id, double val)::node_id(id),value(val) {}
};
int main()
{
unordered_set<node> set;
set.insert(node("1001",100));
if(set.find("1001") != set.end()) cout << "1001 found" << endl;
}
Vielleicht hilft das? http://stackoverflow.com/questions/15869066/inserting-into-unordered-set-with-custom-hash-function – JohnB
Es sieht aus wie Sie brauchen eine Karte und nicht ein Set. –
Ich habe tatsächlich Karte verwendet. aber es hat gelesen, dass eine ungeordnete Menge eine O (1) -Komplexität zum Nachschlagen hat. – daydayup