value函数什么意思c++map⾃定义⽐较函数(按key和按value)按key:
1//⾃定义map的key
2typedef struct UrlKey
3{
4    uint64_t dwBussID;
5    uint64_t dwVersion;
6    uint64_t dwHashUrl;
7}UrlKey;
8
9//⾃定义map的value
10typedef struct UrlValue
11{
12    string strUrl;
13}UrlValue;
14
15//map的⽐较函数
16struct cmp_key
17{
18    bool operator()(const UrlKey &k1, const UrlKey &k2)const
19    {
20        if(k1.dwBussID != k2.dwBussID)
21        {
22            return k1.dwBussID < k2.dwBussID;
23        }
24
25        if(k1.dwVersion != k2.dwVersion)
26        {
27            return k1.dwVersion < k2.dwVersion;
28        }
29        if(k1.dwHashUrl != k2.dwHashUrl)
30        {
31            return k1.dwHashUrl < k2.dwHashUrl;
32        }
33          return false;
34    }
35};
36
37map<UrlKey, UrlValue, cmp_key> UrlMap;
按value:
这个就⽐较⿇烦了。⼤致分为两种⽅法:
1:再建⼀个新的map和原先map的key和value正好反过来,但前提是原先的value没有重复。
2:将map转换成vector<pair<> >来排序。
1#include <bits/stdc++.h>
2
3using namespace std;
4
5map<int,int> MMP;
6
7struct CmpByValue {
8  bool operator()(const pair<int,int>& lhs, const pair<int,int>& rhs)const {
9    return lhs.second < rhs.second;
10  }
11};
12
13int main(){
14
15 MMP.insert(make_pair(1,4));
16 MMP.insert(make_pair(2,3));
17 MMP.insert(make_pair(3,2));
18 MMP.insert(make_pair(4,1));
19
20 vector< pair<int,int> > V(MMP.begin(),d());
21
22 sort(V.begin(),V.end(),CmpByValue());
23
24 for(int i=0 ; i<V.size() ; ++i){
25  printf("%d\n",V[i].second);
26 }
27
28 return 0;
29}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。