问题描述
我有一个 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 的回答在技术上是正确的,但我们可以做得更好。
- 通常最好尽可能使用标准算法
- 将参数设置为
const
以便它也可以与容器一起使用来构造对象 - 在 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);
}
);