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

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

想与习题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;

    }

    

 

你可能感兴趣的:(insert)