没有匹配函数可用于调用'std :: map <std :: pair <int,int =“”>,int> :: insert(std :: pair <int,int =“”>,int)'vis.insert (make_pair(1,2),3);

时间:2018-12-31 10:04:23

标签: c++ stl

我写了一个简单的代码,如下所示,它使用对作为地图中的键,

map<pair<int, int>, int> vis;
int main(
                )
{
        vis.insert(make_pair(1,2),3);
        return 0;
}

vis.insert(make_pair(1,2),3)行上出现错误,因为“ 没有匹配函数来调用'std :: map,int> :: insert(std :: pair,int)'   vis.insert(make_pair(1,2),3);“。有人知道我为什么收到此错误?

1 个答案:

答案 0 :(得分:3)

您的地图的密钥是一对,值是一个整数。问题是insert()得到一个参数,它是一对键和值。您有两种选择:

std::map<std::pair<int, int>, int> vis;
int main(
                )
{
    // option one (c++11 and later)
    vis.emplace(std::make_pair(1,2),3);

    // option two - pack key and value into a single pair.
    vis.insert(std::make_pair(std::make_pair(1,2),3));

    // option three - use braces (c++11 and later)
    vis.insert({{1,2},3});

    return 0;
}