C++で降順にソートされたmultimapを作成する方法


以下に、降順にソートされたmultimapを作成するいくつかの方法を示します。

方法1: カスタム比較関数を使用する

#include <iostream>
#include <map>
struct Compare {
    bool operator()(const int& a, const int& b) const {
        return a > b;
    }
};
int main() {
    std::multimap<int, std::string, Compare> myMap;
    myMap.insert(std::make_pair(3, "Three"));
    myMap.insert(std::make_pair(1, "One"));
    myMap.insert(std::make_pair(2, "Two"));
    for (const auto& pair : myMap) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }
    return 0;
}

この方法では、カスタム比較関数 Compare を作成し、その関数をmultimapのテンプレート引数として渡します。operator()関数では、要素のキーを逆の順序で比較しています。

方法2: ラムダ式を使用する

#include <iostream>
#include <map>
int main() {
    std::multimap<int, std::string, std::greater<int>> myMap;
    myMap.insert(std::make_pair(3, "Three"));
    myMap.insert(std::make_pair(1, "One"));
    myMap.insert(std::make_pair(2, "Two"));
    for (const auto& pair : myMap) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }
    return 0;
}

この方法では、multimapのテンプレート引数として std::greater<int> を指定します。これにより、要素が降順にソートされます。

どちらの方法でも、multimapの要素は降順にソートされ、結果を出力することができます。