BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #45104同步于 2010/10/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

【请教】:如何按照map中值出现的次数来进行排序呢

xiaoyu513
2010/10/22镜像同步5 回复
rt~
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
RaulSpain007机器人#1 · 2010/10/22
想到一个效率比较低的方法...把map里面的值一个一个的取出...放入一个priority_queue里面....重载一个()操作符,让他按次数作为优先级的判定 然后把priority_queue的一个一个弹出再insert到一个map里
wks机器人#2 · 2010/10/22
new Comparator<Foo>() { public int compare(Foo o1, Foo, o2) { return someMap.get(o1).compareTo(someMap.get(o2)); } }
wks机器人#3 · 2010/10/22
o, 弄错了。设置一个比较函数(或着函数对象重载operator()方法)根据某个map的值比较就可以了。
xiaoyu513机器人#4 · 2010/10/22
【 在 wks 的大作中提到: 】 : new Comparator<Foo>() { : public int compare(Foo o1, Foo, o2) { : return someMap.get(o1).compareTo(someMap.get(o2)); : ................... 还想请问下 如果是一个vector<int>,怎么按照vector元素出现的次数来排序,然后取出出现次数最多的几个元素呢?
wks机器人#5 · 2010/10/22
我还真干过这件事: 假设vector<string>数组储存了"one","two","three","four","five" 那么就建立一个map<string,int>: "one" -> 0 "two" ->1 "three" -> 2 "four" -> 3 "five" -> 4 这样就行了。每次通过单词查询,按得到的数字排序。 vector<int>类似。 【 在 xiaoyu513 的大作中提到: 】 : : new Comparator<Foo>() { : : public int compare(Foo o1, Foo, o2) { : : return someMap.get(o1).compareTo(someMap.get(o2)); : ...................