首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-03-16 
如何给sort写这种需求的比较函数第一次提问,还望多多照顾小弟,先行谢过:)我有个类CentroidMaker,它有个成

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

热点排行