标签:blog class code color c int
在C++中用到map时,如果KEY是自定义的struct,那么需要自己定义比较函数。因为只有基本类型有默认的比较方法。
定义的方法有两种,一是在作为key的struct中,重载操作符less(<),二是自定义仿函数作为map的比较函数,个人比较喜欢第二种方法。
//自定义map的keytypedef struct UrlKey{ uint64_t dwBussID; uint64_t dwVersion; uint64_t dwHashUrl;}UrlKey;//自定义map的valuetypedef 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;} |
标签:blog class code color c int
原文地址:http://www.cnblogs.com/waittingforyou/p/3719460.html