单词词频统计程序(map set 应用)
2017-08-24 10:01
309 查看
题目:
输入大量单词,每词一行,不超过20字符,没有空格。按出现次数从多到少输出这些单词及其出现次数。出现次数相同的,按字典序输出。
实现:
这里用到的STL 中的 set map string
(1):首先是 set<Word,Rule> 表示 元素类型为Word 并且按照规则 Rule进行排序
(2):然后map<string,int> mp, mp的第一个元素为string(关键字),mp的第二个元素为int类型。
也就类似有两个结构变量 分别为 first, second(可以用迭代器直接调用)
其中mp[string] 表示的就是 second的值 并且 每个string关键字初始为0
输入大量单词,每词一行,不超过20字符,没有空格。按出现次数从多到少输出这些单词及其出现次数。出现次数相同的,按字典序输出。
实现:
#include<iostream> #include<string> #include<map> #include<set> using namespace std; struct Word{ int times; string wd; }; struct Rule{//自定义的比较 bool operator()(const Word &w1,const Word &w2){ if(w1.times != w2.times) return w1.times > w2.times; else{ return w1.wd < w2.wd; } } }; int main() { //freopen("C:\\Users\\zhangwei\\Desktop\\input.txt","r",stdin); string s; set<Word,Rule> st; map<string, int> mp; while(cin >> s) ++mp[s];// mp[s] 表示的就是对应的s的second值 for(map<string, int>::iterator i = mp.begin(); i != mp.end(); i++ ){ Word tmp; tmp.wd = i->first; tmp.times = i->second; st.insert(tmp);//插入过程 自动排序了 } for(set<Word,Rule>::iterator i = st.begin(); i != st.end(); i++ ){ cout <<i->wd << " " << i->times<<endl; } return 0; }
这里用到的STL 中的 set map string
(1):首先是 set<Word,Rule> 表示 元素类型为Word 并且按照规则 Rule进行排序
(2):然后map<string,int> mp, mp的第一个元素为string(关键字),mp的第二个元素为int类型。
也就类似有两个结构变量 分别为 first, second(可以用迭代器直接调用)
其中mp[string] 表示的就是 second的值 并且 每个string关键字初始为0
相关文章推荐
- map与set的简单综合应用,统计单词词频
- 软件体系结构课程设计:词频统计程序(包含英文单词和数字double,int)
- linux shell 下载维基百科特色条目并统计单词词频
- 运行Hadoop自带的wordcount单词统计程序
- 每天一个小程序之python实现统计英文单词出现个数
- C++第17周项目7——用程序玩文件(1)统计单词数
- python 文本单词提取和词频统计
- c++ 统计英文文本中每个单词的词频并且按照词频对每行排序
- C++英文单词统计小程序
- 单词出现统计程序
- 编写一个程序,统计给定文件中包含的每个单词出现的频率,并按单词表的顺序显示统计结果
- 关联容器map应用-统计单词出现频率
- 练习2-4:编一个程序统计文件中特定单词出现的次数(要求使用string类的运算符==来查找单词) .
- 小玩具——单词词频统计
- 英文单词统计程序
- C++统计单词小程序
- C#中HashTable和快速排序的用法,从单词频率统计小程序写起
- 用STL解决单词统计程序
- Java 进行词频统计,并按单词顺序顺序排序