🐵指尖猴全新升级
第22课:综合实战:单词计数
🔢

综合实战:单词计数

词频统计之王,一map定乾坤!

📖知识引入

📥需求分析
读入一堆单词,统计每个单词出现次数并按序输出
➕见词加一
cnt[word]++:键不存在时自动建0再加1,一行代码核心逻辑
🔤自动排序
map内部按键从小到大排好,遍历即得有序结果
⚡复杂度优势
每个单词O(log n)入库,比双重循环两两比对快得多
💡
cnt[word]++是词频统计的灵魂:map遇到新键自动初始化为0,大胆加就行

🔍单词计数完整程序

map<string, int> cnt;
string word;
int n;
cin >> n;
for (int i = 0; i < n; i++) {
    cin >> word;
    cnt[word]++;   // 新词自动从0变1,老词累加
}

// map按键自动排好序,遍历输出
for (auto& p : cnt) {
    cout << p.first << " 出现 " << p.second << " 次" << endl;
}
// 输入: apple banana apple
// 输出: apple 出现 2 次 / banana 出现 1 次

一行cnt[word]++完成统计,map自动排序输出

🎯小测验

第1题:统计词频的核心一行代码是?

第2题:map遍历输出词频时结果的特点是?

第3题:第一次执行cnt["new"]++后,cnt["new"]的值是?

📝本课知识点

  • ✓cnt[word]++一词一行
  • ✓map遍历按键有序
  • ✓词频统计是map看家本领
第22课完成!继续探索下一课吧 🚀