class compare
{
public:
bool operator()(const int x,const int y) const
{
if(x-y == 0)
return false;
else
return true;
}
};
int main()
{
std::map<char,int,compare> mymap;
//Add data into map
mymap.insert ( std::pair<char,int>('f',100) );
mymap.insert ( std::pair<char,int>('a',100) );
mymap.insert ( std::pair<char,int>('k',100) );
mymap.insert ( std::pair<char,int>('z',200) );
//try to find a key in map
std::map<char,int,compare>::iterator l_pos = mymap.begin();
l_pos = mymap.find('z');
if(l_pos != mymap.end())
{
printf("\nfound = %c\n",l_pos->first);
}
else
{
printf("Not found = %c\n",l_pos->first);
}
}
结果:
Not found =
但是如果我显示地图,我可以看到内容。mymap 包含:f => 100 a => 100 k => 100 z => 20
当编写自定义比较函数以阻止键排序时,在 stl 映射中查找不起作用。查找失败。有没有办法来解决这个问题?Find 不返回任何数据。我知道 stl 地图不是为了这个目的。但是有没有办法解决这个问题?比较函数停止排序。条目以相反的顺序存储。当我使用 for 循环遍历地图时,我可以看到所有值。只有 find 命令不起作用。