利用stl统计单词出现次数并排序

map和multimap默认都是按照key进行排序的

用一个map<string,int>统计出每个单词出现的次数,但是此时map是按照字符串排序

于是我们再用一个multimap<int,string>来把存储map中的内容,这是的key是int 就会按照单词出现的次数来排序

也就实现了我们的目标

这里之所以用multimap来临时存储是因为multimap可以存在相同的key而map是的key必须唯一

 1   map<string,int> word_cnt;
 2     multimap<int,string> ans;
 3     ifstream fin("txt.txt");
 4     char p[256];
 5     while(!fin.eof())
 6     {
 7         fin>>p;
 8         word_cnt[p]++;
 9         //cout<<p<<endl;
10     }
11     fin.close();
12     for(map<string,int>::iterator it = word_cnt.begin();it!=word_cnt.end();it++)
13     {
14         int x = it->second;
15         string s = it->first;
16         ans.insert(pair<int,string>(x,s));
17     }
18     for(multimap<int,string>::iterator itt=ans.begin(); itt!=ans.end(); itt++)
19     {
20         cout<<itt->first<<" "<<itt->second<<endl;
21     }

 

posted @ 2014-03-16 02:00  0弓虽  阅读(611)  评论(0编辑  收藏  举报