Das nächstliegende Äquivalent von C++ std::map<>
(ein interner Baum) ist C# OrderedDictionary<>
(ein interner Baum), während C# OrderedDictionary<>
fehlen einige sehr wichtige Methoden aus C++ std::map<>
, nämlich: std::map::find
, std::map::lower_bound
, std::map::upper_bound
, std::map::equal_range
und std::map
iterators
die im Grunde das Rückgrat der 4 vorangegangenen Methoden bilden.
Warum sind diese 4 Methoden wichtig? Weil sie uns die Möglichkeit geben, den "Aufenthaltsort" eines bestimmten Schlüssels ausfindig zu machen, zusätzlich zu der Möglichkeit, nur zu prüfen, ob ein Schlüssel existiert oder ob das SortedDictionary garantiert geordnet ist.
Was ist der "Verbleib" eines Schlüssels in einem std::map
? Der Schlüssel muss nicht notwendigerweise in der Sammlung vorhanden sein. Wir wollen wissen, an welcher Stelle sich der Schlüssel befinden könnte, in der Regel zwischen zwei Iteratoren, die jeweils auf zwei benachbarte vorhandene Schlüssel in der Sammlung zeigen, so dass wir mit dem Bereich fällt der Schlüssel in eine O(logN)
Komplexität. Ohne solche 4 Methoden (mit Iteratoren) muss man eine O(N)
Iteration durch die Sammlung jedes Mal, wenn ein Bereich gegen einen Schlüssel abgefragt wird.
1 Stimmen
C#-Wörterbuch ist gleichbedeutend mit C++ unordered_map . Außerdem, C# SortedDictionary ist gleichbedeutend mit C++ Karte .