举例:按照meetTime属性的时间从小到大排序
class test
{
public:
QDateTime meetTime;
int num;
};
写法1:
QList<test> temp_list;
test aa;
test bb;
test cc;
cc.meetTime = QDateTime().fromString("2019-11-11 20:20:20.222","yyyy-MM-dd hh:mm:ss.zzz");
cc.num=1;
bb.meetTime = QDateTime().fromString("2019-11-11 20:20:21.222","yyyy-MM-dd hh:mm:ss.zzz");
bb.num=2;
aa.meetTime = QDateTime().fromString("2019-11-11 20:20:22.222","yyyy-MM-dd hh:mm:ss.zzz");
aa.num=3;
temp_list.append(aa);
temp_list.append(bb);
temp_list.append(cc);
for(int i = 0; i < temp_list.count() ; i++)
{ qDebug() << temp_list.at(i).num; }
qSort(temp_list.begin(), temp_list.end(),[](const test &infoA,const test &infoB){return infoA.meetTime < infoB.meetTime;});
for(int i = 0; i < temp_list.count() ; i++)
{ qDebug() << temp_list.at(i).num<<temp_list.at(i).meetTime.toString("yyyy-MM-dd hh:mm:ss.zzz"); }
写法2:
int compare(const test &infoA,const test &infoB)
{
return infoA.meetTime < infoB.meetTime;
}
QList<test> temp_list;
test aa;
test bb;
test cc;
cc.meetTime = QDateTime().fromString("2019-11-11 20:20:20.222","yyyy-MM-dd hh:mm:ss.zzz");
cc.num=1;
bb.meetTime = QDateTime().fromString("2019-11-11 20:20:21.222","yyyy-MM-dd hh:mm:ss.zzz");
bb.num=2;
aa.meetTime = QDateTime().fromString("2019-11-11 20:20:22.222","yyyy-MM-dd hh:mm:ss.zzz");
aa.num=3;
temp_list.append(aa);
temp_list.append(bb);
temp_list.append(cc);
for(int i = 0; i < temp_list.count() ; i++)
{ qDebug() << temp_list.at(i).num; }
qSort(temp_list.begin(), temp_list.end(),compare);
for(int i = 0; i < temp_list.count() ; i++)
{ qDebug() << temp_list.at(i).num<<temp_list.at(i).meetTime.toString("yyyy-MM-dd hh:mm:ss.zzz"); }
写法3:
QList<test> temp_list;
test aa;
test bb;
test cc;
cc.meetTime = QDateTime().fromString("2019-11-11 20:20:20.222","yyyy-MM-dd hh:mm:ss.zzz");
cc.num=1;
bb.meetTime = QDateTime().fromString("2019-11-11 20:20:21.222","yyyy-MM-dd hh:mm:ss.zzz");
bb.num=2;
aa.meetTime = QDateTime().fromString("2019-11-11 20:20:22.222","yyyy-MM-dd hh:mm:ss.zzz");
aa.num=3;
temp_list.append(aa);
temp_list.append(bb);
temp_list.append(cc);
for(int i = 0; i < temp_list.count() ; i++)
{ qDebug() << temp_list.at(i).num; }
for( int i=0; i<temp_list.count()-1; i++ ){
test icondition = temp_list.at(i);
for( int j=i+1; j<temp_list.count(); j++ ){
test jcondition = temp_list.at(j);
if( icondition.meetTime>jcondition.meetTime ){
temp_list.swap( i, j );
}
}
}
for(int i = 0; i < temp_list.count() ; i++)
{ qDebug() << temp_list.at(i).num<<temp_list.at(i).meetTime.toString("yyyy-MM-dd hh:mm:ss.zzz"); }
这三种写法会得到相同的排序结果: