QMap 如何根据value排序?
需求:
有一个QMap<QString,qreal> map,存储的数据为名字对应值,如: apple -> 12.2 , orange-> 23.3,banana->10.5。 现在需要按照map元素值的升序的顺序获取QMap中的所有元素。
也就是希望获得的结果是:banana,10.5 -> apple,12.2 -> orange,23.3 。
方法:
qSort可以实现对容器排序,但是无法对QMap使用qSort。
我们可以先将QMap中的元素放入到QVector,然后再对QVector进行排序,最终获得排序后的数据。
测试:
为了更好理解,程序中将map元素的数据类型定义为fruit。
排序的关键在于qSort第三个参数的编写,它是一个函数,用来判断元素的大小。 为了方便 这里使用了lambda表达式。
程序输出结果: