2016-12-15 3 views
1

Dies erzeugt CompilerfehlerKarte (vs) unordered_map mit Paar als Schlüssel

unordered_map<pair<int,int>,int> umap; 

Ich verstehe, dass eine Hash-Funktion zur Verfügung gestellt werden muß, damit es funktioniert.

Aber

map<pair<int,int>,int> omap; 

einfach und ohne Hash-Funktion.

Warum ist das so?

+0

Welcher Compilerfehler wird produziert? – mascoj

+0

https://ideone.com/lgS58Z – DeCoDeR

Antwort

3

std::map verwendet keine Hash-Funktion. Vielmehr werden seine "Schlüssel unter Verwendung der Vergleichsfunktion ..." sortiert, wobei "Such-, Lösch- und Einfügeoperationen logarithmische Komplexität aufweisen". Die Suche erfolgt über einen Suchbaum und nicht über Hashing.

Verwandte Themen