《C++ Primer》P314中使用insert重写单词统计程序的扩展

本文介绍如何使用C++编程语言,通过读取输入的字符串和整数对,存储到向量中,并利用map数据结构统计特定单词的出现频率。在第二次输入单词时,程序能够正确地更新其计数,通过调用cin.clear()来重置输入流状态。最后,程序遍历map,输出每个单词及其对应的计数值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编写程序统计并输出所读入的单词出现的次数

想与习题10-1相结合,也就是先输入几组 map<string, int>类型,存入vector中。

再输入单词word,如果已经存在则在key对应的value+1

如果不存在,则插入并使得其value为1.

之前的问题是-》输入了一次之后,再要输入单词word,读不进。(呵呵 果然小白)

看到11章之后,知道要用语句cin.clear;使得输入流重新有效。

再然后 重新熟悉了iterator对map的操作。

复制代码
#include <iostream>
#include <utility>
#include<vector>
#include <string>
#include <map>

using namespace std;

int main()
{
    pair<string,int > sipr;
    string str;
    int ival;
    vector< pair<string,int> > pvec;
    map<string,int> word_count;
    cout<<"Enter a string and an integer ( Ctrl + Z to end) : "
        <<endl;
    while (cin >>str>>ival  )
    {
        sipr = make_pair(str, ival);
        pvec.push_back(sipr);
        word_count.insert(map<string, int>::value_type(str, ival) );
    }
    
    string num;
    cin.clear();
    while ( cin>>num )
    {
        pair<map<string,int>::iterator , bool> ret=
            word_count.insert(make_pair(num, 1));
        if (!ret.second)
        {
            ++ret.first->second;
            cout<<ret.first->first<<" 的值变为:"<<ret.first->second<<endl;
        }
    }
    map<string,int>::iterator it = word_count.begin();
    while (it !=word_count.end())
    {
        cout<<"key:" <<it->first<<"value:"<< it->second <<endl;
        it++;
    }

    return 0;
    }
    
复制代码

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值