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....

Sigh. How many times will it take before you realise nobody cares unless you use code-tags?
How hard can it possibly be for you? Select your code, and click code.

Third time's a charm, I hope.

Edited 3 Years Ago by happygeek: fixed formatting

This article has been dead for over six months. Start a new discussion instead.