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' 是 map 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 回答