
[英]3-3. Write a program to count how many times each distinct word appears in its input
[英]Write a program to count how many times each distinct word appears in its input
这是加速C ++中的一个问题(3-3)。
我是C ++的新手。 我已经考虑了很长时间,但是我无法弄清楚。 谁能为我解决这个问题? 请详细解释一下,您知道我不太擅长编程。 告诉我您使用的变量的含义。
最好的数据结构类似于std::map<std::string,unsigned>
,但是直到第7章您都不会遇到映射。
以下是基于第3章内容的一些提示:
std::vector<std::string>
std::sort
可与std::vector<std::string>
,并且可以检查两个字符串是否都相同,并且s1==s2
就像整数一样。 s
是std::string
,则std::cin >> s
从std::cin
读入s
。 为了提供最佳的学习体验,我将不会提供可粘贴的代码。 那是练习。 您必须自己做才能尽可能多地学习。
这是采用一种映射的完美方案,该映射可在访问不存在的键时创建其值类型。 幸运的是,C ++在其标准库中有一个这样的映射: std::map<key_type,value_type>
正是您所需要的。
所以这是拼图碎片:
>>
从单词到单词将单词逐字读入字符串 0
(零) 祝您玩得开心!
这是我的提示。 std::map
将成为您的朋友。
好吧,您需要一种从输入流中获取单个单词的方法(例如,类似于“标准输入流”中所应用的“输入流”方法),以及一种将这些字符串和计数存储在某种“集合”中的方法。
我天生的作业冷嘲热讽和对生活的普遍冷漠使我此刻无法添加更多细节:-)
我使用的任何变量的含义都是不言而喻的,因为我倾向于使用诸如objectsRemaining
或hasBeenOpened
类的东西。
这是一个您可以使用的算法,尝试对某些内容进行编码并将结果放在此处。 人们可以帮助您进一步发展。
向下扫描收集每个字母的字符串,直到到达单词边界(例如空格或。或等)。 将该单词与您已经找到的单词进行比较,如果已经找到,则将该单词的计数加一。 如果不是,则将该单词添加到找到的单词列表中(计数为1)。
继续进行下去
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.