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 マップがこの目的のためのものではないことを知っています。しかし、これを修正する方法はありますか?Compare 関数はソートを停止します。エントリは逆順に格納されます。for ループを使用してマップを反復処理すると、すべての値が表示されます。機能していないのは find コマンドだけです。