需求:

有一个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表达式。

 

程序输出结果: