读书人

怎么给sort写这种需求的比较函数

发布时间: 2012-03-16 16:34:56 作者: rapoo

如何给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函数

读书人网 >C++

热点推荐