计算c ++中的单词列表

时间:2014-06-08 10:59:09

标签: c++

现在我正在处理UVA问题10420-征服清单(链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=1361)。为了达到这一点,我将使问题的条件更简单。你只需要计算输入的单词数量。例如,您必须输入所有这些。

Spain
England
England
France

输出该单词输入的次数。必须输出ALPHABETICALLY。

England 2
France  1
Spain   1

由于我不知道会出现哪些单词,我将如何计算c ++中具有此条件的单词?

1 个答案:

答案 0 :(得分:0)

在这种情况下,通常使用标准容器std::map<std::string, size_t>

例如

#include <iostream>
#include <string>
#include <map>

int main()
{
   std::map<std::string, size_t> m;
   std::string word;

   while ( std::cin >> word ) ++m[word];

   for ( const auto &p : m ) std::cout << p.first << '\t' << p.second << std::endl;
}

你应该按Ctrl + Z(在Windows中)或Ctrl + D(在Unix中)来完成单词的输入。

或者您可以使用函数std::getline代替operator >>

例如

#include <iostream>
#include <string>
#include <map>

int main()
{
   std::map<std::string, size_t> m;
   std::string word;

   while ( std::getline( std::cin, word ) && !word.empty() ) ++m[word];

   for ( const auto &p : m ) std::cout << p.first << '\t' << p.second << std::endl;
}

在这种情况下,要完成输入,您需要输入一个空字符串,只需按ENTER键。

如果输入是

Spain
England
England
France

输出

England 2
France  1
Spain   1