在线等待,使用stl中的sort出了问题

hxzb7215191 2007-05-23 03:08:48

// 这是比较的函数
bool operator < ( ProGameCarGuoJiMaJiang::SCardItem& param1, ProGameCarGuoJiMaJiang::SCardItem& param2);
// 这是比较函数实现

bool operator < (const ProGameCarGuoJiMaJiang::SCardItem& param1,const ProGameCarGuoJiMaJiang::SCardItem& param2)
{
if (param1.Type<param2.Type)
{
return true;
}
else if (param1.Type == param2.Type)
{
if (param1.CardIndex<param2.CardIndex)
{
return true;
}
return false;
}
return false;
}


/**
麻将牌
*/
typedef struct _SCardItem
{
ECardType Type; //牌类型
UINT8 CardIndex; //牌的序号
}SCardItem;

typedef std::vector<SCardItem> TVecCardItem;


// 一旦调用
TVecCardItem m_arrCards ;
std::sort(m_arrCards.begin(),m_arrCards.end());

将会出错:

c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\algorithm(1719) : error C2676: 二进制“<” : “std::allocator<_Ty>::value_type”不定义该运算符或到预定义运算符可接收的类型的转换

我知道这个是由于没有操作符,我试着在struct里定义<操作符是可以的.
但是现在这个struct我无法去修改到了.

如何解决.谢谢.
...全文
229 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
无法修改就将
bool operator < ( ProGameCarGuoJiMaJiang::SCardItem& param1, ProGameCarGuoJiMaJiang::SCardItem& param2);
改成一个函数对象,放到sort的第三个参数上面
zdleek 2007-06-25
  • 打赏
  • 举报
回复
sort(vp.begin(), vp.end(), UDgreater);
zdleek 2007-06-25
  • 打赏
  • 举报
回复
楼主可以参考我下面的代码
struct pp
{
int point;
int id;
};
bool UDgreater ( struct pp pp1, struct pp pp2 )
{
return pp1.point > pp2.point;
}

void test()
{
struct pp node;

vector<pp> vp;
for(int i =0; i < 10; i++)
{
node.point = i + 100;
node.id =i;
vp.push_back(node);
}

sort(vp.begin(), vp.end(), UDgreater);
for(int i =0; i < 10; i++)
{
cout<< vp[i].point << endl;
}
}

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧