Qt如何对自定义类型列表排序?
本来是想用qSort来排序的,结果发现在使用lambda表达式的时候有警告。
所以还是选择使用标准库的sort函数。
现有一个结构体s_mydata,它有两个元素_val1和_val2。
如何对以s_mydata作为元素类型的列表进行排序呢?
使用sort函数的三参数版本,前两个参数表示排序范围,第三个参数是一个函数用来确定
元素的大小。
示例:
1.准备一些数据。
2.对datalist排序
sort的第一个参数和第二个参数使用datalist的迭代器begin和end表示对整个列表进行排序。
为了省事,第三个参数使用了lambda表达式[](const s_mydata& d1, const s_mydata& da){ return d1._val2 < d2._val2; }
[]表示不需要捕获外部变量,()里是函数参数,{}里是函数体。return d1._val2 < d2._val2表示以结构体的_val2作为大小比较依据。
可以看到列表_val2的值为升序。
3.改为按照_val1排序
---> 文章来源于我的个人博客:fearlazy
---> 编程是一件怎么也学不会的事情,但是如果能享受学习的过程也是挺好的。