Почему STL unordered_map и unordered_set не могут быть отсортированы алгоритмами STL?

Я начну с иллюстрации простого примера использования:

Рассмотрим проблему базы данных идентификаторов социального обеспечения, где в C ++ код моделируется какstd::unordered_map где его ключ - идентификатор социального обеспечения человека, а его ценность -std::string с полным именем этого лица (например,std::unordered_map<int, std::string> DB;).

Также учтите, что существует запрос на печать этой базы данных, отсортированный в порядке возрастания на основе идентификатора человека (т.е.std::unordered_mapключ).

Наивно, можно подумать, использоватьstd::sort для того, чтобы отсортироватьstd::unordered_map в соответствии с запрошенными критериями, а затем распечатайте его, как в примере кода ниже:

   std::sort(DB.begin(), DB.end());
   for(auto p : DB) std::cout << "ID(" << p.first
                              << ") - " 
                              << p.second 
                              << std::endl;
Однако это не так, потому что использованиеstd::sort с диапазоном либоstd::unordered_map илиstd::unordered_set вызовет ошибку компилятора.Вопросы:Почему неупорядоченные контейнеры STL не могут быть отсортированы поstd::sort?Существует ли законный и эффективный способ сортировкиstd::unordered_map илиstd::unordered_set?

Ответы на вопрос(3)

Ваш ответ на вопрос