簡體   English   中英

如何檢查元素是否在C ++中的映射鍵中?

[英]How can I check if an element is in map keys in C++?

我想知道是否有一種方法可以檢查元素是否包含在地圖鍵中。 例如:

#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;

}

先感謝您

只需檢查是否mymap.find('b') != mymap.end()

您可以通過將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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM