按照Value </string,int>的降序对C ++中的Map <string,int>进行排序

时间:2014-10-19 08:08:11

标签: c++ sorting map

我需要按照出现次数的降序对 Map(Key = Word,Value = CountofWord)进行排序,并在Map中打印前10个单词。什么是最好的方法呢?

我的想法是构建一个 Multimap(Key = CountofWord,Values = Words),然后打印Multimap的前10个元素。但这需要额外的O(n)空间。

可以有任何其他优化的解决方案吗?

1 个答案:

答案 0 :(得分:0)

只是要指出你提出的解决方案没有考虑到两个字数可以具有相同的值,因此两个字将映射到同一个键并覆盖最后一个。

你可以做的是用一个单词构成一个单词,成员变量是单词作为字符串,计数为int,并实现&lt;运算符,允许通过std :: sort方法对对象进行排序。请参阅http://www.cplusplus.com/reference/algorithm/sort/