《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; }