C++ 如何在地图中搜索本身就是一对的密钥?

C++ 如何在地图中搜索本身就是一对的密钥?,c++,C++,我想检查一把钥匙,它本身就是一对,是否存在于地图中 我是一个新的使用地图,无法找到一个功能,将检查一个关键是一对 #include<bits/stdc++.h> using namespace std; #define ll long long int typedef pair<ll,ll> my_key_type; typedef map<my_key_type,ll> my_map_type; int main() { my_map_type

我想检查一把钥匙,它本身就是一对,是否存在于地图中

我是一个新的使用地图,无法找到一个功能,将检查一个关键是一对

#include<bits/stdc++.h>
using namespace std;
#define  ll long long int
typedef pair<ll,ll> my_key_type;
typedef map<my_key_type,ll> my_map_type;
int  main()
{
    my_map_type ma;
    my_map_type::iterator it;
    ma.insert(make_pair(my_key_type(30,40),6));
    it=ma.find(30,40);
    if(it==ma.end())
    {
        cout<<"not present";
        return 0;
    }
    cout<<"present";
    return 0;   
}                   
我收到以下错误-

no matching function for call to ‘std::map<std::pair<long long int, long long int>, long long int>::find(int, int)’   it=ma.find(30,40);
当你使用

it=ma.find(30,40);
编译器不会自动将参数转换为一对。你必须明确地这样做

it=ma.find(std::make_pair(30,40));
或者更简单的版本

it=ma.find({30,40});
您需要搜索一对整数,而不是两个单整数。无关:不要使用include并避免使用namespace std。它们一起强化了他人最坏的影响,并可能导致真正令人讨厌和难以捉摸的错误。