海量数据中,找出出现次数TOPK的记录

题目:在一个文本中有大量的字符串记录,统计出现次数最多的字符串及其次数。

思路:使用STL中的map可以快速的解决这个问题,map是一类关联式容器,通过RB树实现的,自动建立key-value的对应,key和value可以是任何类型。

#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
int cmp(const pair& a,const pair& b)
{
	return a.second > b.second;
}
void sortMapByValue(map& tMap,vector>& tVector)
{
	for (map::iterator it=tMap.begin(); it!=tMap.end();it++)
	{
		tVector.push_back(make_pair(it->first,it->second));
	}
	sort(tVector.begin(),tVector.end(),cmp);
}
int main()
{
	ifstream bigData("F:\\bigdata.txt");
	string strIn="";
	map myMap;
	vector> myVec;
	while(getline(bigData,strIn))
	{
		if (strIn != "")
			myMap[strIn]++;
	}
	sortMapByValue(myMap,myVec);
	for (int i=0; i<10; i++)
		cout<


你可能感兴趣的:(海量数据处理)