c++ - 在 C++ 中创建哈希表以进行字符串操作

标签 c++ hash hashtable

我正在尝试处理文章或任何段落的内容 [每个字符串]。首先,我将使用 strtok() 将其转换为单词。

之后我想将每个单词存储在哈希表中(因为我认为这是处理大数据的唯一最佳方式)。在处理每个单词时,我想存储每个单词的出现。最后我想得到最长时间出现的单词。

unordered_map 存储具有键值的元素,并允许快速检索具有键的元素。这可能对我有用。

我不擅长C++,所以想听听一些意见。

  1. 将整个包含存储在 char *ch ="content of article" 中是继续进行的好方法还是 string::str?我只熟悉第一个。第二次我在使用函数时感到很复杂。

  2. 将整个内容(字符串)存储到 unordered_map() 中,然后我如何创建包含元素作为单词的哈希表,它与它一起出现。然后我能得到出现次数最多的单词吗?

  3. 是否有任何其他 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/

相关文章:

c++ - 如何告诉 static_assert constexpr 函数参数是 const?

c - C 中哈希码的递归

node.js - 使用 Node 和 Python 对页面源进行哈希处理时的差异

基于 Excel 公式的 SHA256/SHA512 哈希函数,无需 VBA 或宏

c - 使用 MPI 发送 glib 哈希表

java - 具有单独链接的 HashMap

java - 如何在 Java 代码中使用从 .dll 中使用和返回对象的函数?

c++ - 自身模板崩溃原因

c++ - 在 C++ 中分配和释放类整数句柄的快速算法

c++ - 枚举作为 C++ 中函数的返回类型