C++でのunordered_mapのソート方法は何ですか?
C++のunordered_mapは、直接の並べ替えをサポートしていない無順序コンテナです。しかし、unordered_mapの要素を他の有序コンテナ(例えば、vectorやmap)にコピーしてから、そのコンテナをソートすることができます。以下はその例です。
#include <iostream>
#include <unordered_map>
#include <vector>
#include <algorithm>
int main() {
std::unordered_map<int, std::string> myMap;
myMap.insert({3, "Apple"});
myMap.insert({1, "Banana"});
myMap.insert({2, "Orange"});
// 将unordered_map的元素复制到vector中
std::vector<std::pair<int, std::string>> vec(myMap.begin(), myMap.end());
// 对vector进行排序
std::sort(vec.begin(), vec.end());
// 输出排序后的结果
for (const auto& pair : vec) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
結果はキーの昇順で並べ替えられます。
1: Banana
2: Orange
3: Apple
unordered_mapはハッシュテーブルに基づいて実装されており、無順序のコンテナに対して、ソートはその設計目的に適していません。順序付けられたキーと値の保存が必要な場合は、mapコンテナを検討してください。