map容器中怎么输出值最大的那个键呢

map<string,int>clors;stringclor;while(n!=0&&cin>>clor){++clors[clor];--n;}比如就这个clors容... map<string,int> clors;
string clor;
while (n!=0&&cin>>clor)
{
++clors[clor];
--n;
}
比如就这个clors容器中, 记录了各个颜色的出现次数,想输出出现次数最多的那个颜色,该怎么写呢。。 谢谢
无视while里的n!=0和--n吧。。
展开
 我来答
Acfun老婆指定唯一老公
推荐于2016-04-12 · TA获得超过3.5万个赞
知道大有可为答主
回答量:1.2万
采纳率:72%
帮助的人:1010万
展开全部

遍历容器,找到数值最大的int值,然后再次遍历,判断相等就返回所需的string.
下面是代码:
int nMax = 0;
for(map<string,int>::iterator iter = clor.begin() ; iter !=  clor.end() ; ++iter)
{
   int n = iter->second;

   if( n > nMax )

       nMax = n;

}
string stValue;
for(map<string,int>::iterator iter = clor.begin() ; iter !=  clor.end() ; ++iter)
{
   if(iter->second == nMax)

   {
       strValue = iter->first;
       break;

   }
}

容器map的遍历方法:

1、常规方法

2、利用keyset进行遍历,其优点在于可以根据所想要的key值得到想要的 values,更具灵活性。

3、比较复杂的一种遍历在这里,其灵活性极强,想得到什么就能得到什么。

eerfcfc
推荐于2016-12-01 · TA获得超过389个赞
知道小有建树答主
回答量:148
采纳率:0%
帮助的人:141万
展开全部
遍历容器,找到数值最大的int值,然后再次遍历,判断相等就返回所需的string.
下面是代码:
int nMax = 0;
for(map<string,int>::iterator iter = clor.begin() ; iter != clor.end() ; ++iter)
{
int n = iter->second;

if( n > nMax )

nMax = n;

}
string stValue;
for(map<string,int>::iterator iter = clor.begin() ; iter != clor.end() ; ++iter)
{
if(iter->second == nMax)

{
strValue = iter->first;
break;

}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式