码迷,mamicode.com
首页 > 编程语言 > 详细

关于map的按照value排序输出

时间:2021-04-01 13:44:57      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:tor   for   find   笔试   题意   map   问题   out   i++   

关于map的按照value排序输出;会错题意,但是华为实习笔试是这个思路,按照map的value排序输出。

#include<iostream>
using namespace std;
#include<string>
#include<map>
#include<vector>
#include<algorithm>

typedef pair<string, int> PAIR;
int cmp (PAIR &x, PAIR &y)
{
return x.second > y.second;
}
//按照输入的顺序……
int main()
{
int n = 0;
string name;
string voter;


while(cin >> n)
{
map<string, int> candidates;
int nVoters = 0;
int invalid = 0;
while(n--)
{
cin >> name;//专门用一个向量来存储输入的顺序,后面遍历向量元素,在map中找到对应的value
candidates[name] = 0;
}
cin >> nVoters;
while(nVoters--)
{
cin >> voter;
if(candidates.find(voter) == candidates.end())
{
invalid ++;
}
else
{
candidates[voter] ++;
}

}


/*
//做一个PAIR类型的向量
vector<PAIR> vec(candidates.begin(), candidates.end());
//对向量排序
sort(vec.begin(),vec.end(),cmp);
//打印输出
for(int i=0;i<vec.size();i++)
{
cout << vec[i].first << " : " << vec[i].second << endl;
}
cout << "Invalid : " << invalid << endl;
candidates.clear();
vec.clear();
/* //明确几个问题:it是一个指针,it->first;而first和second是成员,所以没有括号;对象用的是.运算符:vec[i].first
for(auto it = vec.begin();it != vec.end(); it++)
{
cout << it->first << 
}
*/
*/

}


return 0;
}

  

关于map的按照value排序输出

标签:tor   for   find   笔试   题意   map   问题   out   i++   

原文地址:https://www.cnblogs.com/zlh-1024powr/p/14605039.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!