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

Sort a Map<string,int> in C++ in descending order of Value

本文关键字:int string gt 排序 lt 降序 C++ 中的 Map      更新时间:2023-10-16

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

我的想法是构建一个多映射(Key=CountofWord,Values=Words),然后打印多映射的前10个元素。但这将占用O(n)额外的空间。

还有其他优化的解决方案吗?

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

相反,您可以使用成员变量(word为string,count为int)创建一个单词类,并实现<运算符,允许通过std::sort方法对对象进行排序。提到http://www.cplusplus.com/reference/algorithm/sort/.