题目地址
代码及分析:
#include<map>
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
int main()
{
map<string,int> ::iterator x;//定义一个迭代器,用于搜索
map<string,int> Ballons;//map定义。键值string,码int
int t;
string s;
while(scanf("%d",&t)!=EOF){//数据的组数
if(t==0)
break;
Ballons.clear();
for(int i=0;i<t;i++)
{
/* Ballons.clear();*///错误代码,不能每一次都清空一次,明显的逻辑错误
cin>>s;//输入颜色
if(Ballons.count(s)==0){//当s不存在于map中才可以插入
Ballons.insert( pair <string,int>(s,0));
}
else{
Ballons[s]++;
}
}
int max=0;
string s2;
for(x=Ballons.begin();x!=Ballons.end();x++)
{
if(x->second>=max)
{
max=x->second;
s2=x->first;
}
}
cout<<s2<<endl;
}
return 0;
}
/*
map的基本操作函数:
C++ Maps是一种关联式容器,包含“关键字/值”对
begin() 返回指向map头部的迭代器
clear() 删除所有元素
count() 返回指定元素出现的次数
//为什么c++里map容器的count函数返回的只能是0或1
//因为map中的key是不可重复的,如果
多次往map里插入同一个key就会覆盖,
不会并存,所以key不存在就是返回0,
存在就只能是1,不会更多
empty() 如果map为空则返回true
end() 返回指向map末尾的迭代器
equal_range() 返回特殊条目的迭代器对
erase() 删除一个元素
find() 查找一个元素
get_allocator() 返回map的配置器
insert() 插入元素
key_comp() 返回比较元素key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向map尾部的逆向迭代器
rend() 返回一个指向map头部的逆向迭代器
size() 返回map中元素的个数
swap() 交换两个map
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数
*/