您的位置:首页 > 其它

set不能通过指针元素指向的成员进行排序

2009-05-09 15:16 423 查看
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;
}
};

上面是为一个等待房间排序写的类,运行情况良好
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐