Als «unordered-map» getaggte Fragen


2
C ++ unordered_map mit einem benutzerdefinierten Klassentyp als Schlüssel
Ich versuche, eine benutzerdefinierte Klasse als Schlüssel für eine zu verwenden unordered_map, wie die folgende: #include <iostream> #include <algorithm> #include <unordered_map> using namespace std; class node; class Solution; class Node { public: int a; int b; int c; Node(){} Node(vector<int> v) { sort(v.begin(), v.end()); a = v[0]; b = v[1]; …

3
Wie spezialisiere ich std :: hash <Key> :: operator () für benutzerdefinierte Typen in ungeordneten Containern?
Benutzerdefinierte Schlüsseltypen in zu unterstützen std::unordered_set&lt;Key&gt;und std::unordered_map&lt;Key, Value&gt; man hat zu schaffen operator==(Key, Key)und ein Hash Funktors: struct X { int id; /* ... */ }; bool operator==(X a, X b) { return a.id == b.id; } struct MyHash { size_t operator()(const X&amp; x) const { return std::hash&lt;int&gt;()(x.id); } }; …

4
Wie wähle ich zwischen map und unordered_map?
Angenommen, ich wollte Daten mit einer Zeichenfolge als Schlüssel zuordnen. Welchen Container hätte ich wählen sollen mapoder unordered_map? unordered_mapnimmt mehr Speicherplatz in Anspruch, nehmen wir also an, dass Speicher kein Problem ist und das Problem die Geschwindigkeit ist. unordered_mapsollte im Allgemeinen eine durchschnittliche Komplexität von O (1) mit dem schlechtesten …

2
Führt der Operator std :: unordered_map [] eine Nullinitialisierung für einen nicht vorhandenen Schlüssel durch?
Laut cppreference.com wird std::map::operator[]für nicht vorhandene Werte eine Nullinitialisierung durchgeführt . Dieselbe Site erwähnt jedoch keine Nullinitialisierung für std::unordered_map::operator[], außer es gibt ein Beispiel, das sich darauf stützt. Natürlich ist dies nur eine Referenzseite, nicht der Standard. Ist der folgende Code in Ordnung oder nicht? #include &lt;unordered_map&gt; int main() { …

1
Speicherverlust während unordered_map :: insert KeyEqual-Ausnahme mit GCC - Verletzung der Sicherheitsgarantie für starke Ausnahmen?
Ich verwende GCC 7.3.1, habe es aber auch auf coliru getestet, von dem ich glaube, dass es Version 9.2.0 ist. Bauen Sie mit folgendem: g++ -fsanitize=address -fno-omit-frame-pointer rai.cpp Hier ist rai.cpp: #include &lt;iostream&gt; #include &lt;unordered_map&gt; int main() { try { struct MyComp { bool operator()(const std::string&amp;, const std::string&amp;) const { …
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.