//题目描述:找寻一堆数据中哪个数据出现的最多;
//第一种思路:用c语言直接存放数组;
//第二种思路:用map存放,存放到vector中
//vector容器 中关于map对象的排序;
struct cmpByValue {
bool operator()(const PAIR& left, const PAIR& right) {
return left.second == right.second ? left.first < right.first : left.second > right.second;
} //降序是> 因此先判断value,从大到小排序,如果value相同,则排序key;
};
/*bool cmp(const PAIR& left,const PAIR& right)
{
return left.second==right.second?left.first<right.first:left.second>right.second;
}*/
//找寻vector里面的map的最大值,输出key;key为first value为second; //
typedef pair<int, int> PAIR; //1.pair可以将两个元素组成为一个元素保存2.返回两个数据
map<int, int> m;
vector<PAIR> v(m.begin(), m.end()); //将map容器放入vector容器中,因为map无法给value排序,所以必须借助vector进行排序。
sort(v.begin(),v.end(),cmp); //sort(v.begin(),v.end(),cmp());用结构体前面那个用函数
max = v[0].second;
for (int i = 0; i != (int)v.size(); ++i)
if(v[i].second == max)
cout << v[i].first << endl;
else break;