我写了一个简单的代码,如下所示,它使用对作为地图中的键,
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);“。有人知道我为什么收到此错误?
答案 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;
}