您的位置:首页 > 产品设计 > UI/UE

涉及到的map按value排序问题

2017-09-09 13:52 127 查看
#include<map>
#include<set>
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
struct CmpByValue {
bool operator()(const pair<string, int> & lhs, const pair<string, int> & rhs)
{
return lhs.second > rhs.second;
}//从大到小
};
int main(){
int n1,n2;
while (cin>>n1>>n2){
int l1 = 0, l2 = 0;
int t;
vector<int> m1 = {};
for (int i = 0; i < n1; i++){
cin >> t;
m1.push_back(t);
}
sort(m1.begin(), m1.end());
string s;
map<string, int> m2 = {};
for (int i = 0; i < n2; i++){
cin >> s;
m2[s]++;
}
vector<pair<string, int> > vec(m2.begin(), m2.end());//把map中元素转存到vector中
sort(vec.begin(), vec.end(), CmpByValue());
int j = 0;
for (auto i = vec.begin(); i != vec.end(); i++){
l1 += (i->second)*m1[j];//显然i->second为value,i->first为key
l2 += (i->second)*m1[n1-1-j];
j++;
}
cout << l1 << " " << l2 << endl;
}
return 0;
}
map默认情况下按照key排序!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: