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

map自定义比较函数erase.find有有关问题

2012-04-24 
map自定义比较函数erase.find有问题class StrCompare{public:bool operator ()(const AnsiString str1,con

map自定义比较函数erase.find有问题


class StrCompare
{
public:
bool operator ()(const AnsiString str1,const AnsiString str2)const
{
return (str1.AnsiCompareIC(str2) <= 0 );
}
};

typedef multimap<AnsiString, tagZqdmItem*, StrCompare> mapZqdm;


插入,输出元素都没有问题。所有元素也都按希望的一样有序。

但是find总是会返回end().
erase直接就失去响应了。



[解决办法]
return (str1.AnsiCompareIC(str2) <= 0 );
==》
return (str1.AnsiCompareIC(str2) < 0 );

因为 stl传递的是<.排序用的是<是 a<b, 大于是 a>b && !(a<b). 等于是 !(a>b)&& !(a<b)
所以 如果你传入的是小于等于,那么永远不可能为真。

热点排行