我正在测试STL查找算法。我到达了地图容器。但是,地图有其自己的方法(map_name.find(key))。即使这样,如果提供一对作为查找元素,则通用查找功能也应该起作用。但这不起作用。
我尝试在地图上找到一对元素,但这是行不通的。我试图找到一个*迭代器,它可以工作。所以...这意味着* iterator不是一对?!
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,但是似乎被映射的map :: iterator不是一对。比什么?
答案 0 :(得分:3)
知道了。 *迭代器是
pair<const int, int>
而不是
par<int,int>
因为键元素在映射中必须为const。现在可以了。