使用Cpp根据Qt中的类属性对QList进行排序

问题描述

我有一个 QList qList,我想根据 Players 类中的属性“playerRank”对其进行排序。 Players 类如下所示。

class Players
{
public:
    Players();
    int playerId;
    QString playerName;
    int playerRank;

    void setPlayerId(int id);
    void setPlayerName(QString name);
    void setPlayerRank(int rank);
};


#include "players.h"

Players::Players()
{

}

void Players::setPlayerId(int id)
{
    playerId = id;
}

void Players::setPlayerName(QString name)
{
    playerName = name;
}

void Players::setPlayerRank(int rank)
{
    playerRank = rank;
}

我该怎么做?

解决方法

@Ishra 的回答在技术上是正确的,但我们可以做得更好。

  1. 通常最好尽可能使用标准算法
  2. 将参数设置为 const 以便它也可以与容器一起使用来构造对象
  3. 在 lambda 中不需要低效的“通过复制捕获所有内容”
std::sort(qList.begin(),qList.end(),[](const Players& p1,const Players& p2) {  
    return (p1.playerRank < p2.playerRank);
});
,

你可以qSort并传递一个 lambda 作为比较器。

 qSort(qList.begin(),[=] (Players& p1,Players& p2)->bool  
     {  
        return (p1.playerRank < p2.playerRank);  
     }
 );

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...