我将首先说明一个简单的用例示例:
考虑一个社会保障 ID 数据库的问题,其中 C++ 代码被建模为 a
std::unordered_map
,它的键是一个人的社会保障 ID,它的值是std::string
带有那个人的全名的 a(例如,std::unordered_map<int, std::string> DB;
)。还请考虑,有一个打印此数据库的请求,该数据库根据人的 ID(即
std::unordered_map
's 键)按升序排序。天真地,人们会考虑使用
std::sort
以便std::unordered_map
根据请求的标准对它进行排序,然后打印它,如下面的示例代码:
std::sort(DB.begin(), DB.end());
for(auto p : DB) std::cout << "ID(" << p.first
<< ") - "
<< p.second
<< std::endl;
- 但是,情况并非如此,因为在 a或 a
std::sort
范围内使用a会引发编译器错误。std::unordered_map
std::unordered_set
问题:
- 为什么 STL 的无序容器不能按 排序
std::sort
? - 是否有一种合法且有效的方法来对 a
std::unordered_map
或 a进行排序std::unordered_set
?