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コンテナを検討してください。

bannerAds