使用unordered_map重写词频统计作业
时间: 2024-01-24 11:16:09 浏览: 91
使用unordered_map重写词频统计作业可以提高代码的效率和简洁性。unordered_map是C++标准库中的一个关联容器,它提供了快速的查找和插入操作,适用于需要频繁查找和插入的场景。
下面是使用unordered_map重写词频统计作业的示例代码:
```cpp
#include <iostream>
#include <unordered_map>
#include <string>
#include <vector>
#include <algorithm>
// 定义比较函数,用于按词频降序排序
bool compare(const std::pair<std::string, int>& a, const std::pair<std::string, int>& b) {
return a.second > b.second;
}
int main() {
std::string text = "This is a test. This is only a test.";
// 将字符串分解为有效部分和后缀
// ...
// 将有效部分大小写归一
// ...
std::unordered_map<std::string, int> wordFreq;
// 统计词频
// 遍历有效部分的单词,将单词作为键,词频作为值存入unordered_map
// 如果单词已存在,则词频加1;如果单词不存在,则插入新的键值对
// ...
// 将unordered_map中的键值对转换为vector,方便排序
std::vector<std::pair<std::string, int>> freqList(wordFreq.begin(), wordFreq.end());
// 按词频降序排序
std::sort(freqList.begin(), freqList.end(), compare);
// 输出词频前十的单词
for (int i = 0; i < 10 && i < freqList.size(); i++) {
std::cout << freqList[i].first << ": " << freqList[i].second << std::endl;
}
return 0;
}
```
阅读全文