#include <iostream>
#include <string>
#include <map>
#include <fstream>
#include <algorithm>
#include <ctime>
using namespace std;
map<string , int> m;
void print( const pair<string, int> &r)
{
cout << r.first << " " << r.second << endl;
}
void record( const string &s)
{
m[ s ] ++;
}
int main()
{
double beginTime = clock();
fstream in("source.txt");
istream_iterator<string> ii(in);
istream_iterator<string>eos;
for_each(ii,eos,record);
for_each( m.begin(), m.end(), print);
double endTime = clock();
cout << " time: " << endTime - beginTime << " ms" << endl;
return 0;
}
//我的电脑,一样的文件17833ms
/*
#include <time.h>
#include <map>
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
double beginTime = clock();
ifstream in("source.txt");
map<string, int> M;
map<string, int>::iterator j;
string t;
while( in >> t )
{
M[t]++;
}
for ( j = M.begin(); j != M.end(); j++)
{
cout << j->first << " " << j->second << endl;
}
double endTime = clock();
cout << "time: " << endTime - beginTime << "ms " << endl;
return 0;
} //我的电脑,一样的文件17945ms
//差别不大,但是C++的输入输出严重影响的效率,如果用C语言实现,同样的数据,时间不会超过2000ms
*/