C++ C++;映射迭代器以查找最重复的单词

C++ C++;映射迭代器以查找最重复的单词,c++,C++,程序打印重复次数最多的单词。如果有两个以上的单词不是最重复的,我如何打印“---”呢?目前只适用于2个单词 如果输出为:2苹果香蕉,则打印“--” 输入:5苹果香蕉苹果香蕉 输出:苹果 我怎样才能做到这样: 输入:4苹果香蕉香蕉 输出:“--” #包括 #包括 #包括 使用名称空间std; 无效最重复的单词(int n) { 使用mmap=map;mmap freq; 字符串字; 对于(int i=0;i>单词; 频率[字]+; } 自动it=最大元素(开始(频率),结束(频率),[] (常数m

程序打印重复次数最多的单词。如果有两个以上的单词不是最重复的,我如何打印“---”呢?目前只适用于2个单词

如果输出为:2苹果香蕉,则打印“--”

输入:5苹果香蕉苹果香蕉

输出:苹果

我怎样才能做到这样:

输入:4苹果香蕉香蕉

输出:“--”

#包括
#包括
#包括
使用名称空间std;
无效最重复的单词(int n)
{
使用mmap=map;mmap freq;
字符串字;
对于(int i=0;i>单词;
频率[字]+;
}
自动it=最大元素(开始(频率),结束(频率),[]
(常数mmap::value_type&a,常数mmap::value_type&b)
{返回a.secondsecond<2))
cout 100000)返回0;
重复次数最多的单词(n);
}
系统(“暂停”);
}

一旦达到最大值,计算相似元素的数量:

auto value = it->second;
auto count = count_if(begin(freq), end(freq), [&]
    (const mmap::value_type& a)
    {return a.second == value;});
如果在
计数中有超过1个,请打印“--”:

if(it->second<2 | | count!=1)

“我怎样才能把它打印出来?”——“如果有两个以上的单词不是最重复的?”不完全清楚你的意思。在您的示例中,
apple
banana
重复次数最多,因此您没有“超过2个不重复次数最多的单词”@user463035818如果没有重复次数最多的单词,程序将打印“---”。我在问,如果输入是
apple-apple-banana
它将打印
apple
,但它应该打印“--”,我该如何使它工作。希望您能理解。如果有多个单词是重复次数最多的,那么您希望打印“--”,对吗?@user463035818是的,当前仅当单词数为2时才有效。如果单词是4
apple-apple,banana-banana
,则不起作用。如何在代码中实现它。我找不到办法让它工作。抱歉,如果这是一个愚蠢的问题。
如果(count>=1)
,就这样,没别的了。代码的其余部分可以按原样使用。很抱歉打扰您,我尝试在上面添加您的代码,而不是我的if、else块,但无效。修改我的答案以添加if;)
auto value = it->second;
auto count = count_if(begin(freq), end(freq), [&]
    (const mmap::value_type& a)
    {return a.second == value;});
if (it->second < 2 || count != 1)
    cout << "---" << endl;
else
    cout << it->first << endl;