最近我遇到了一个非常普遍的问题,主要可以归结为以下内容:
给定一段长文本,计算文本中每个单词出现的频率。
我使用了std::unordered_map
解决了这个问题。然而,这样做相当丑陋,因为对于文本中的每个单词,如果已经遇到过,我必须执行查找、删除,然后重新插入到地图中并增加值。
我意识到还有其他方法可以解决这个问题,比如在普通数组/向量上使用哈希函数并增加值,但我想知道是否有更优雅的方法来解决这个问题,例如具有类似于Python Counter Collections的接口的STL组件或函数。
我知道C++作为C++,我不能总是指望高级概念为我实现,但我只是想知道你们是否知道任何东西(或者至少你们的Google技巧比我强),可以使我的代码更好一些。
std::unordered_multiset<std::string>
或std::unordered_map<std::string, int>
? - user1804599unordered_map
。抱歉,打错字了 :( - Tomasz Kaminski