如何利用unordered_map高效统计文本单词频率?

2026-05-07 15:141阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1061个文字,预计阅读时间需要5分钟。

如何利用unordered_map高效统计文本单词频率?

直接使用 `std::unordered_map` 存储单词和频率,是 C++ 中实现简洁性与性能首选。它不排序、平均插入/查找时间复杂度为 O(1),比 `std::map` 快得多,尤其在文本包含数千个不同单词时差异明显。

但别光图快——std::unordered_map 的键必须可哈希,std::string 已内置支持,不用额外写哈希函数;若你用自定义结构体当键,就得自己提供 std::hash 特化或传入哈希仿函数。

  • 头文件必须加:#include <unordered_map>
  • 声明方式:std::unordered_map<:string int> word_count;</:string>
  • 计数只需一行:word_count[cleaned_word]++;(自动初始化为 0 再加 1)
  • 注意:空字符串 "" 也会被当作有效键存进去,后续遍历时得跳过

清洗单词比选容器更关键

绝大多数词频不准,不是因为用了 map 还是 unordered_map,而是单词没洗干净。比如 "Hello!""hello""HELLO" 默认会被算作三个不同单词。

阅读全文
标签:Cred

本文共计1061个文字,预计阅读时间需要5分钟。

如何利用unordered_map高效统计文本单词频率?

直接使用 `std::unordered_map` 存储单词和频率,是 C++ 中实现简洁性与性能首选。它不排序、平均插入/查找时间复杂度为 O(1),比 `std::map` 快得多,尤其在文本包含数千个不同单词时差异明显。

但别光图快——std::unordered_map 的键必须可哈希,std::string 已内置支持,不用额外写哈希函数;若你用自定义结构体当键,就得自己提供 std::hash 特化或传入哈希仿函数。

  • 头文件必须加:#include <unordered_map>
  • 声明方式:std::unordered_map<:string int> word_count;</:string>
  • 计数只需一行:word_count[cleaned_word]++;(自动初始化为 0 再加 1)
  • 注意:空字符串 "" 也会被当作有效键存进去,后续遍历时得跳过

清洗单词比选容器更关键

绝大多数词频不准,不是因为用了 map 还是 unordered_map,而是单词没洗干净。比如 "Hello!""hello""HELLO" 默认会被算作三个不同单词。

阅读全文
标签:Cred