加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – qt对Type *元素的容器进行排序

发布时间:2020-12-16 09:45:08 所属栏目:百科 来源:网络整理
导读:我有一个自定义类型Class1,其中bool运算符 (Class1 other);被定义了. 我也有一些容器,例如QVector Class1 *容器; 当我使用qSort(container.begin(),container.end());项目按其内存地址排序. 然后我决定实施bool运算符 (Class1 * other);但排序也是以同样的方
我有一个自定义类型Class1,其中bool运算符< (Class1& other);被定义了.
我也有一些容器,例如QVector< Class1 *>容器;
当我使用qSort(container.begin(),container.end());项目按其内存地址排序.
然后我决定实施bool运算符< (Class1 * other);但排序也是以同样的方式进行的.

解决方法

您需要为 qSort function提供LessThan函数.以下是文档中的示例:

void qSort ( RandomAccessIterator begin,RandomAccessIterator end,LessThan lessThan )

This is an overloaded function.

Uses the lessThan function instead of operator<() to compare the items.

For example,here’s how to sort the strings in a QStringList in case-insensitive alphabetical order:

bool caseInsensitiveLessThan(const QString &s1,const QString &s2)
 {
     return s1.toLower() < s2.toLower();
 }

 int doSomething()
 {
     QStringList list;
     list << "AlPha" << "beTA" << "gamma" << "DELTA";
     qSort(list.begin(),list.end(),caseInsensitiveLessThan);
     // list: [ "AlPha","beTA","DELTA","gamma" ]
 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读