C++编程,从一个文件中统计所有出现过的单词,并按次数从大到小输出
来源:互联网 发布:访客网络要开启吗 编辑:程序博客网 时间:2024/05/15 03:54
转自 http://zhidao.baidu.com/link?url=cN4SGBB-hTJ4MZA4wZVmcfXOmQkBJadTsGhxOaaT6pSRnggGUWt10qXC8fsH-Be17vX2Fpq1LxYlKMfvtIZlv_
(1)程序的输入文本为每行切词后的结果,每个单词(term)之间以制表符分割。 (2)使用hashmap计算单词和其出现的个数,key为term,value为其出现次数。统计完后将hashmap转换为vector,使用STL的标准排序算法#include <iostream>#include <string>#include <fstream>#include <vector>#include <algorithm>#include <ext/hash_map>using namespace std;using namespace __gnu_cxx; struct str_hash{size_t operator()(const string& str) const{ unsigned long __h = 0; for (size_t i = 0 ; i < str.size() ; i ++)__h = 5*__h + str[i];return size_t(__h);}};bool less_first(pair<int, string> const& lhs, pair<int, string> const& rhs){ return lhs.first > rhs.first;}vector<pair<int, string> > mirror_map(hash_map<string, int, str_hash> const& m){vector<pair<int, string> > mirror;for (hash_map<string, int, str_hash>::const_iterator i = m.begin(); i != m.end(); ++i){mirror.push_back(pair<int, string>(i->second, i->first));} std::sort(mirror.begin(), mirror.end(), less_first); return mirror;}int main(){ifstream input;ofstream output;input.open("word.txt");output.open("wordfrequency.txt");string eachline;hash_map<string,int,str_hash> termtime;while(getline(input,eachline) ){string::size_type start = 0;string::size_type end = eachline.find_first_of("\t");while(end != string::npos){string term = eachline.substr(start, end - start);termtime[term]++;start = end + 1;end = eachline.find_first_of("\t",start);}if(start != eachline.size()){string term = eachline.substr(start);termtime[term]++;}}vector<pair<int, string> > mirror = mirror_map(termtime);for(vector<pair<int, string> >::iterator myiter= mirror.begin(); myiter != mirror.end(); ++myiter){output<<myiter->second<<"\t"<<myiter->first<<endl;}input.close();output.close(); cout << "Done" << endl;system("pause");return 0;}
0 0
- C++编程,从一个文件中统计所有出现过的单词,并按次数从大到小输出
- C++从一个文件中统计所有出现过的单词,并按次数从大到小输出
- 从文章中统计不同单词出现的次数
- 从终端输入中统计字符数、单词数、行数,并输出单词
- c语言统计从文件读取的文章中所有单词的出现次数
- 大数据第8天----------------------文件中统计单词出现的次数
- Java实现 统计单词出现的次数并按照单词频率从高到低输出
- 初探map()——对一个文件进行统计其中各个单词出现的次数,并按次数从高到低的顺序进行排序
- 统计单词出现的次数并按单词出现的次数顺序输出单词及其次数
- 给定一个字符串S,求所有长度小于等于3的子串出现的次数,输出结果按出现次数从大到小
- C 从一个字符串中提取单词输出,并输出最长的单词
- shell 中统计字符串出现的次数
- vim中统计字符串出现的次数
- 从一个字符串中统计一个子串的数
- 针对一个文件 统计其中的单词和字符数 找出文件中出现次数最多的单词数 将文件中出现的单词按频率进行排序并输出
- 输入一个英语句子,将句中单词按照出现次数从多到少输出。
- java中统计一个字符串串在另一个字符串中出现的次数
- 字符串组中统计出现次数最大的-python
- CMarkup: fast simple C++ XML parser 学习笔记
- iOS学习笔记-错误-ARC forbids explicit message send of autorelease
- OGRE3D 渲染系统线程化
- CaptainGan------ 使用“递归方法”对整个目录进行删除操作
- hdu4760Good Firewall(Trie树)
- C++编程,从一个文件中统计所有出现过的单词,并按次数从大到小输出
- 【C++/数据结构】单链表的基本操作
- ...
- Python之requests的安装
- input新特性的带来的便捷
- float,double在内存中的存储方式
- Android Studio导入本地jar包,本地library库,maven库相关方法
- Spiral Matrix II
- 剑指off-求1到n的代数和