0

マップキーに要素が含まれているかどうかを確認する方法があるのだろうか。例えば:

#include<iostream>
#include<map>

using namespace std;

int main()
{

map<char, int> mymap;

mymap['a'] = 1;
mymap['b'] = 2;
mymap['z'] = 26;

// I want to check if 'b' is one of the keys in map mymap.

    return 0;
}

要素「a」、「b」、および「z」は、マップmymapのキーです。true要素がマップのキーにあり、要素がマップのキーにない場合に返されるコマンドが必要ですfalse。私は周りを見回しましたが、これを行う簡単な組み込みメソッドを見つけることができました。私は何かを逃しましたか?そのような方法はありますか?

これが私の望ましい結果を得る長い道のりです:

#include<iostream>
#include<map>

using namespace std;

bool check_key(map<char, int> mymap, char key_val);

int main()
{

map<char, int> mymap;

mymap['a'] = 1;
mymap['b'] = 2;
mymap['z'] = 26;

char key_val = 'h';

cout<<mymap.find('z')->first<<endl;

cout<<"checking "<< check_key(mymap, 'h')<<endl;
cout<<"checking "<< check_key(mymap, 'b')<<endl;

    return 0;
}

bool check_key(map<char, int> mymap, char key_val){

    for (map<char, int>::const_iterator it = mymap.begin(); it != mymap.end(); ++it ){
        if (key_val == it->first){
            return true;
        }

    }
    return false;

}

前もって感謝します

4

2 に答える 2

13

かどうかを確認するだけmymap.find('b') != mymap.end()です。

于 2012-05-06T16:57:26.917 に答える
7

の結果を:find()によって返されるイテレータと比較することにより、キーが存在するかどうかを確認できます。end()

std::map<char, int> my_map;
// add items
std::map<char, int>::iterator found = my_map.find('b');
if (found == my_map.end())
{
  // 'b' is not in the map
}
于 2012-05-06T16:58:47.167 に答える