用STL实现单词统计功能

来源:互联网 发布:c语言复合语句的用法 编辑:程序博客网 时间:2024/05/02 00:41

用STL实现单词统计功能

/*实现功能:将输入的单词转换为小写,并进行排序以及输出单词出现的频率,原来也用Hash表和二叉排序树实现过此类功能,STL用起来更简便*/#include<iostream>#include<string>#include<map>#include<vector>#include<set>#include<algorithm>#include<cctype>using namespace std;char toLower(char ch)//tolower()函数定义为int tolower(int){           //为了使其与char匹配所以进行了一下转换return tolower(ch);}string& ToLower(string &s){transform(s.begin(),s.end(),s.begin(),toLower);return s;}int main(int argc,char *argv[]){vector<string> word;string input;cout<<"Enter words(q to quit):"<<endl;while(cin>>input&&input!="q")word.push_back(input);set<string> wordset;//把单词放进集合,并将其转换成小写transform(word.begin(),word.end(),insert_iterator<set<string> >(wordset,wordset.begin()),ToLower);map<string,int> wordmap;//把单词及其频率放进map中set<string>::iterator it;for(it=wordset.begin();it!=wordset.end();it++)wordmap[*it]=count(word.begin(),word.end(),*it);map<string,int>::iterator si;//输出for(si=wordmap.begin();si!=wordmap.end();si++)cout<<si->first<<":"<<si->second<<endl;return 0;}

2 0
原创粉丝点击