我正在尝试处理文章或任何段落的内容 [每个字符串]。首先,我将使用 strtok()
将其转换为单词。
之后我想将每个单词存储在哈希表中(因为我认为这是处理大数据的唯一最佳方式)。在处理每个单词时,我想存储每个单词的出现。最后我想得到最长时间出现的单词。
unordered_map
存储具有键值的元素,并允许快速检索具有键的元素。这可能对我有用。
我不擅长C++,所以想听听一些意见。
将整个包含存储在
char *ch ="content of article"
中是继续进行的好方法还是 string::str?我只熟悉第一个。第二次我在使用函数时感到很复杂。将整个内容(字符串)存储到
unordered_map()
中,然后我如何创建包含元素作为单词的哈希表,它与它一起出现。然后我能得到出现次数最多的单词吗?是否有任何其他 C++ 函数可以帮助我做我想做的事。
最佳答案
您需要的数据结构似乎需要执行多项操作:按键(字)查找每个键的字符串值(计数)。但是您还希望能够打印频繁的作品,在这种情况下您需要按值排序。
没有一个标准容器可以开箱即用地处理这个问题。由于第一个操作会频繁发生,而第二个操作只发生一次,因此您应该选择最适合第一个操作的容器。
std::map 和 std::unordered_map 都可以。
尝试以下操作:
std::map<std::string, int>
或
unordered_map std::map<std::string, int>
要按频率顺序打印所有作品,您必须将其复制到另一个结构中,然后对其进行排序。或者它在一次操作中。您可以将所有内容复制到
std::map<int, std::string>
然后打印它。
关于c++ - 在 C++ 中创建哈希表以进行字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18381495/