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;
}
};
上面是为一个等待房间排序写的类,运行情况良好
{
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;
}
};
上面是为一个等待房间排序写的类,运行情况良好
相关文章推荐
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?
- 题目:将二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向
- 用指向指针方法对N个字符串进行排序并输出
- 20140424 父类指针指向子类 子类指针指向父类 父类指针不能访问子类成员(虚函数例外)
- 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
- 7.22通过指向对象的指针访问对象中的成员
- 用指向指针方法对N个字符串进行排序并输出
- c - 对数组进行排序(通过指针的指针)
- 用指向指针方法对N个字符串进行排序并输出
- 用指向指针的指针的方法对n个整数进行排序。
- 不能通过改变形参指针的值(形参所指向的地址)来改变实参指针的地址,实现改变实参指针所指向地址变量的值。
- const修饰的常量 不能被直接修改 但是可以通过指针进行间接修改
- 指针对虚基类成员变量的访问为什么不能直接通过offset访问,而需要通过vbtable间接访问?
- 【C语言】指向指针的指针变量对字符串进行排序
- warning C4407: 在指向成员表示形式的不同指针之间进行转换,编译器可能生成不正确的代码
- 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
- 指针指向常量的场合,不能试图通过修改指针指向的内容来修改常量
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?
- C语言单向动态链表程序,实现链表的建立,合并,重新排序,链表元素的插入与删除,以及根据元素成员的值进行元素删除。
- 不能通过键盘输入一个字符串,并使未初始化的指针指向它