MFC的CListCtrl排序(SortItems)是一个稳定的排序吗?

时间:2011-06-23 13:54:57

标签: c++ sorting mfc

标题是什么 - 如果我为CListCtrl的排序回调提供-1,0和1的值(按标题/列排序)是stable sort的排序?

1 个答案:

答案 0 :(得分:1)

回调的前两个参数设计为要在此迭代中进行比较的元素,第三个参数设计用于订单,列和其他条件。回调执行比较并返回一个整数值,表示移动元素的方向(如果有的话)。

从这个意义上说,如果你比较了lparam id并且做了一个小于或减法的比较,它可以是一个稳定的排序,确保一个非递减的顺序。实际上,您可以不同地实现回调或在第三个参数中传递其他排序条件来执行升序,降序或其他一些自定义排序比较,因此无法保证。

作为一方而言,将std::vector之类的数据容器与控件分开维护可能更有效,并在std::sort等优化容器上执行稳定的排序算法,然后使用{{1 LVS_OWNERDATA上的样式通过CListCtrl回调从数据容器中提取。