-4

我正在尝试制作一个程序来计算特定单词在文本中出现的次数。单词列表将在一个文本文件中,而文本将在另一个文件中。列表中的单词和单词数量未知。我的计划是将单词列表制作成以map<string,int>name不同单词为键的样式的地图,然后在地图中将值增加一。

这是一个例子:

文件.txt:

This is the text the program will analyze with the other file. Fun stuff.

列表.txt:

the
other
normal

运行程序时的预期结果是:

name[the] = 3
name[other] = 1
name[normal] = 0

我需要帮助解决的主要问题是如何从文本文件中的单词制作地图。我大概可以自己整理其他的东西。我显然无法向您展示我的任何代码,因为我需要在开始之前对其进行整理。

此外,这不是一项任务,因此我可以自由地以任何其他方式进行。请告诉您是否知道更有效的方法来做到这一点!

4

3 回答 3

2
  1. 文本文件中读取一个单词。

  2. 增加该单词的映射条目

  3. (重复)

然后

  1. 单词文件中读取一个单词。

  2. 输出该单词的地图条目

  3. (重复)

于 2013-04-04T19:04:22.647 回答
0

这很大程度上取决于您希望在单词列表中占多少百分比的文本文件。如果您希望大多数单词都在列表中,那么@DrewDorman 的解决方案应该可以很好地工作。

如果您希望列表中只有一小部分单词,那么这可能会非常浪费。在这种情况下,您可能希望首先将列表中的单词插入到地图中(计数为 0),然后当您从文本文件中读取单词时,在地图中搜索每个单词并增加计数,如果且仅如果地图中已经存在该单词的条目。

于 2013-04-04T19:38:37.703 回答
0

your_map.insert(std::pair(your_string, your_int));

如果字数不多,也可以考虑使用multimap,然后调用count:

http://www.cplusplus.com/reference/map/multimap/count/

于 2013-04-04T19:01:04.497 回答