class ChildClient
{
public:
int iCurCount;
int iMaxCount;
ChildClient(int iMax, int iCur)
{
iMaxCount = iMax;
iCurCount = iCur;
}
bool operator<(const ChildClient* pClient) const
{
return (iMaxCount - iCurCount) < (pClient->iMaxCount - pClient->iCurCount);
}
};
set中不能通过存储的指针所指向的内容进行排序,如std::set<ChildClient*>这个就不能排序, 而存储的对象的成员可以用来排序,如std::multiset<KChild>;
如果实在需要一个指针也存入set, 则可以构造一个类,包含一个比较参数和需要存储的指针, 如
class WaitingRoomNode
{
public:
int m_iWaitCount;
CGameRoom* m_pGameRoom;
WaitingRoomNode(int iCount, CGameRoom* pGameRoom)
{
m_iWaitCount = iCount;
m_pGameRoom = pGameRoom;
}
bool operator<(const WaitingRoomNode objNode) const
{
return objNode.m_iWaitCount > m_iWaitCount;
}
};
上面是为一个等待房间排序写的类,运行情况良好