¿Por qué STL unordered_map y unordered_set no se pueden ordenar por algoritmos STL?

Comenzaré ilustrando un ejemplo de caso de uso simple:

Considere el problema de una base de datos de ID de seguridad social, donde el código C ++ se modela como unstd::unordered_map donde su clave es la identificación de seguridad social de una persona y su valor es unstd::string con el nombre completo de esa persona (por ejemplo,std::unordered_map<int, std::string> DB;)

Considere también que hay una solicitud para imprimir esta base de datos ordenada en orden ascendente según la identificación de la persona (es decir,std::unordered_mapLa clave).

Ingenuamente, uno pensaría usarstd::sort para ordenar elstd::unordered_map de acuerdo con los criterios solicitados y luego imprímalo, como el código de ejemplo a continuación:

   std::sort(DB.begin(), DB.end());
   for(auto p : DB) std::cout << "ID(" << p.first
                              << ") - " 
                              << p.second 
                              << std::endl;
Sin embargo, este no es el caso, porque el uso destd::sort con un rango de cualquierastd::unordered_map o unstd::unordered_set generará un error del compilador.Preguntas:Por qué los contenedores desordenados de STL no se pueden ordenar porstd::sort?¿Existe una forma legítima y eficiente de clasificar unstd::unordered_map o unstd::unordered_set?

Respuestas a la pregunta(0)

Su respuesta a la pregunta