C++-std::sort参数使用模板
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据报错信息来看,应该是你模版里的类型没有定义 < 运算符,导致sort排序的时候,使用 < 运算符比较出错。你的模板类型是什么类型?定义了<运算符么?