C++-std::sort参数使用模板

发布于 2016-12-21 11:17:02 字数 1043 浏览 1200 评论 1

请输入图片描述

typedef bool(*SortFun)(XContactInfo elem1, XContactInfo elem2);
SortFun m_pCurrentSortFun;
std::map<DataSortType, SortFun> m_DataSortFunMap;

template<bool bDesc>
bool CompareDataName(XContactInfo elem1, XContactInfo elem2)
{
return (elem1.sContactId < elem2.sContactId) ? !bDesc : bDesc;
}
...其他排序省略

void XXX::InitSortFunMap()
{
m_DataSortFunMap[DataSortType_Name] = CompareDataName<FALSE>;
m_DataSortFunMap[DataSortType_Name_Desc] = CompareDataName<TRUE>;
m_DataSortFunMap[DataSortType_Group] = CompareDataGroup<FALSE>;
m_DataSortFunMap[DataSortType_Group_Desc] = CompareDataGroup<TRUE>;
...

m_pCurrentSortFun = m_DataSortFunMap[m_curSortType];
}

使用
std::sort(DestInfo.begin(), DestInfo.end(), m_pCurrentSortFun);//这里会出现一个小于号错误的问题

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清晨说ぺ晚安 2016-12-31 23:30:58

根据报错信息来看,应该是你模版里的类型没有定义 < 运算符,导致sort排序的时候,使用 < 运算符比较出错。你的模板类型是什么类型?定义了<运算符么?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文