利用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 }