Warum können STL unordered_map und unordered_set nicht nach STL-Algorithmen sortiert werden?

Ich beginne mit der Veranschaulichung eines einfachen Anwendungsbeispiels:

Betrachten Sie das Problem einer Sozialversicherungs-ID-Datenbank, bei der in C ++ Code als modelliert wirdstd::unordered_map wobei sein Schlüssel die Sozialversicherungs-ID einer Person ist und sein Wert a iststd::string mit dem vollständigen Namen dieser Person (z. B.std::unordered_map<int, std::string> DB;).

Bedenken Sie auch, dass eine Anforderung zum Drucken dieser Datenbank vorliegt, die in aufsteigender Reihenfolge basierend auf der ID der Person sortiert ist (d. H.std::unordered_mapSchlüssel).

Naiv würde man meinen zu gebrauchenstd::sort um das zu sortierenstd::unordered_map nach den angeforderten Kriterien und drucken Sie es dann aus, wie im folgenden Beispielcode:

   std::sort(DB.begin(), DB.end());
   for(auto p : DB) std::cout << "ID(" << p.first
                              << ") - " 
                              << p.second 
                              << std::endl;
Dies ist jedoch nicht der Fall, da Verwendung vonstd::sort mit einem Bereich von entweder astd::unordered_map oder einstd::unordered_set wird einen Compilerfehler auslösen.Fragen:Warum die ungeordneten Container von STL nicht sortiert werden könnenstd::sort?Gibt es einen legitimen und effizienten Weg, um entweder astd::unordered_map oder einstd::unordered_set?

Antworten auf die Frage(0)

Ihre Antwort auf die Frage