按计数对多图表进行排序

Kos*_*Kos 2 c++ sorting multimap

请帮我按值计数对multimap进行排序.

例如,

multimap<char,int> mymultimap;

mymultimap.insert (pair<char,int>('a',100));
mymultimap.insert (pair<char,int>('a',101));
mymultimap.insert (pair<char,int>('a',111));
mymultimap.insert (pair<char,int>('b',200));
mymultimap.insert (pair<char,int>('b',211));
mymultimap.insert (pair<char,int>('c',300));
Run Code Online (Sandbox Code Playgroud)

应按以下顺序排序后:

c
b
a
Run Code Online (Sandbox Code Playgroud)

我尝试使用这样的自定义比较器:

struct comparer
{
    bool operator() (const char& first, const char& second) const
    {
        return mymultimap.count(first) < mymultimap.count(second);
    }
};
Run Code Online (Sandbox Code Playgroud)

但我无法定义

multimap<char, int, comparer> mymultimap;
Run Code Online (Sandbox Code Playgroud)

struct comparer定义之前.

Mat*_* M. 5

这是不可能的.

除非你继续创建一个自定义结构,否则你需要一个结构来跟踪所有项目(这里是对),还有一个实际计算它们.

实际选择主要取决于排序操作是一次性计算还是实际需要保持同步.

如果是一次性计算,那么只需在需要时进行计算并完成计算.

如果您需要维护此顺序,那么我建议您阅读Boost.MultiIndex并将其用作开发自定义类的基础.