标签:blog class code color c int
在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; } |
标签:blog class code color c int
原文地址:http://www.cnblogs.com/waittingforyou/p/3719460.html