按字符串长度和出现次数排序

时间:2014-04-22 16:21:37

标签: c++

我要做的是改变这种

有一张地图<字符串,整数>它按频率排序

typedef map<string,int> word_Count_List; 
word_Count_List word_Count; 

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;

以后

vector<pair<string,int> > wordVector;
copy(word_Count.begin(), word_Count.end(), back_inserter(wordVector));

sort(wordVector.begin(), wordVector.end(), val_lt);

我想打印一个包含它们出现的单词列表(现在就是这样)但是将比较更改为int * string.length,而不仅仅是int

这就是我现在正在打印的方式

ofstream file_Out;
file_Out.open(file);
for(unsigned int i=0; i<wordVector.size(); ++i) {

   file_Out << wordVector[i].first << " " << wordVector[i].second << "\n";
   }

 file_Out.close();  
}

我对结构和重载不太好,我可以更改上面的那个还是我需要做一些新的事情?

执行

之类的操作是否合法
 {return (x.first.length*x.second)>(y.first.length*y.second);}

0 个答案:

没有答案