如何给sort写这种需求的比较函数
第一次提问,还望多多照顾小弟,先行谢过 :)
我有个类CentroidMaker, 它有个成员变量map <string, vector <int> > m_mod以及int m_fileCount, 我的需求是要按vector的第m_fileCount+1个元素的大小输出键值string,
这个map比较大,小弟目前想法是将它的iterator放到一个vector里去,然后使用sort函数, 对这些iteratro进行排序, 这样当然得写自己的比较函数了, 我试图在CentroidMaker里定义如下函数
typedef map <string, vector <int> > TModifierMap;
bool ModGreater(TModifierMap::iterator it1, TModifierMap::iterator it2){
return it1-> second[m_fileCount] > it2-> second[m_fileCount];
}
然后这样使用sort( vecIt.begin(), vecIt.end(), ModGreater); vecIt是我上面说的放迭代器的vector, 但是这样编译能不过
各位大侠能否指出问题所在? 或者有其它办法没? 注意map比较大,我连键值string都不想有另外拷贝
[解决办法]
比较函数不做成成员函数,然后提供一个方法代替
return it1-> second[m_fileCount] > it2-> second[m_fileCount];
中的m_fileCount应该是可行的
[解决办法]
使用函数对象
[解决办法]
把那个函数定义成static函数