首页 > 代码库 > c++ map自定义比价函数
c++ map自定义比价函数
在C++中用到map时,如果KEY是自定义的struct,那么需要自己定义比较函数。因为只有基本类型有默认的比较方法。
定义的方法有两种,一是在作为key的struct中,重载操作符less(<),二是自定义仿函数作为map的比较函数,个人比较喜欢第二种方法。
//自定义map的key typedef struct UrlKey { uint64_t dwBussID; uint64_t dwVersion; uint64_t dwHashUrl; }UrlKey; //自定义map的value typedef struct UrlValue { string strUrl; }UrlValue; //map的比较函数 struct cmp_key { bool operator()( const UrlKey &k1, const UrlKey &k2) const { if (k1.dwBussID != k2.dwBussID) { return k1.dwBussID < k2.dwBussID; } if (k1.dwVersion != k2.dwVersion) { return k1.dwVersion < k2.dwVersion; } if (k1.dwHashUrl != k2.dwHashUrl) { return k1.dwHashUrl < k2.dwHashUrl; } return false ; } }; int main() { map<UrlKey, UrlValue, cmp_key> UrlMap; UrlKey stKey; stKey.dwBussID = 1; stKey.dwVersion = 2; stKey.dwHashUrl = 3; UrlValue stValue; stValue.strUrl = "abc" ; UrlMap[stKey] = stValue; return 0; } |
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。