Speichern von Elementen in einer unordered_set vs Speicherung in unordered_map
Angenommen ich habe die folgenden Benutzer struct:
struct User {
string userId;
UserType userType; //UserType is just an enumeration
string hostName;
string ipAddress;
//and more other attributes will be added here
};
und brauche ich zum speichern einer Sammlung von Benutzer-Datensätze (rund 10^5 Nutzer, höher skaliert werden kann ). Wäre es besser in der Leistung, wenn ich speichern Sie es als eine unordered_set oder unordered_map? Unordered_set ist technisch das gleiche wie HashSet, und unordered_map ist das gleiche wie HashMap, richtig? Mit einem regulären Satz (bestellt) ist keine option, da einfügen und löschen wird sehr langsam, wenn die Anzahl der Elemente zu erhöhen.
unordered_set <User> userRecords;
ODER
unordered_map <string, User> userRecords; //string is the user ID.
Ich brauche es sehr schnell sein in Bezug auf die einfügen, löschen und Zugriff auf einen bestimmten Benutzer Objekt durch seine userId.
InformationsquelleAutor all_by_grace | 2011-10-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich wählen würde
unordered_map
, weil ich kann ein Benutzer erhält eine userid zu jeder Zeit, ohne zusätzliche Arbeit, während Sie mitunordered_set
ich habe nicht diese Anlage.Als für die genannten Operationen, die Geschwindigkeit wird fast gleich sein.
InformationsquelleAutor Nawaz
Da die
unordered_set<>
nicht geben Ihnen die Möglichkeit, schnell Zugriff eines Benutzers durch seine Benutzer-idunordered_map<>
zu sein scheint, die richtige Wahl.InformationsquelleAutor sth
Wenn die Leistung ist ein wichtiges Anliegen, dann werden Sie wahrscheinlich wollen, um Profil und sehen, welche besser abschneidet. Andernfalls wählen Sie die eine, die die meisten logisch beschreibt, was Sie zu tun versuchen. [Mit nur 100K Gegenstände, die ich denke
set
undmap
kann noch eine akzeptable Leistung, wenn Sie benötigen, bestellen irgendwo anders]InformationsquelleAutor Mark B