map<int,int>的*迭代器是什么?它不是pair<int,int>



我正在测试STL查找算法。我到达了地图容器。但是,map有自己的方法(map_name.find(key((。即便如此,如果提供一对作为要查找的元素,则通用查找函数应该可以工作。但它不起作用。

我尝试在地图中找到一对元素,但它不起作用。我尝试找到一个*迭代器,它可以工作。所以。。。这意味着*迭代器不是一对?!

map<int,int> m = {{0,1}, {1,2}, {2,3}};
map<int,int>::iterator it;
pair<int,int> p = make_pair(0,1);
//this returns compilation error
//it = find(m.begin(), m.end(), p);
//this works fine
it = find(m.begin(), m.end(), *m.begin());
cout << it->first << ' ' << it->second << endl; //prints 0 1

在这两种情况下,我都期望 0 1,但似乎 尊重映射::迭代器 它不是一对。比它是什么?

知道了。它的*迭代器

pair<const int, int>

而不是

par<int,int>

因为关键元素必须是映射中的常量。现在它起作用了。

最新更新