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));
应按以下顺序排序后:
c
b
a
我尝试使用这样的自定义比较器:
struct comparer
{
    bool operator() (const char& first, const char& second) const
    {
        return mymultimap.count(first) < mymultimap.count(second);
    }
};
但我无法定义
multimap<char, int, comparer> mymultimap;
在struct comparer定义之前.
这是不可能的.
除非你继续创建一个自定义结构,否则你需要一个结构来跟踪所有项目(这里是对),还有一个实际计算它们.
实际选择主要取决于排序操作是一次性计算还是实际需要保持同步.
如果是一次性计算,那么只需在需要时进行计算并完成计算.
如果您需要维护此顺序,那么我建议您阅读Boost.MultiIndex并将其用作开发自定义类的基础.
| 归档时间: | 
 | 
| 查看次数: | 470 次 | 
| 最近记录: |