ok ok i got it now right i copy it to vector and sort it..... here is the code
#include <iostream>
#include <fstream>
#include <algorithm>
#include <string>
#include <map>
#include <vector>
using namespace std;
typedef map<string,int> word_count_list;
struct val_lessthan : binary_function < pair<string,int>, pair<string,int>, bool >
{
bool operator() (const pair<string,int>& x, const pair<string,int>& y) const
{return x.second<y.second;}
}val_lt;
int main()
{
word_count_list word_count;
string filename;
// Get the filename.
cout << "Enter the file you wish to have searched:\n";
cin >> filename;
// Open file.
ifstream file(filename.c_str());
// Read in all the words.
string word;
while (file >> word){
// Remove punctuation.
int index;
while ((index = word.find_first_of(".,!?\\;-*+")) != string::npos)
word.erase(index, 1);
++word_count[word];
}
//copy pairs to vector
vector<pair<string,int> > wordvector;
copy(word_count.begin(), word_count.end(), back_inserter(wordvector));
//sort the vector by second (value) instead of key
sort(wordvector.begin(), wordvector.end(), val_lt);
for(int i=0; i<wordvector.size(); ++i)
cout << wordvector.first << " = " << wordvector.second << endl;
return 0;
}
to finish the porgram. i need to output the 20 most common or used words....