为什么 pair 不能与 unordered_map 一起使用?
Why is pair not working with unordered_map?
以下代码无法编译。
带有 pair 的行给出了错误。是否有其他方式访问数据或者是这个
方法正确??
unordered_map<int,int> hm;
unordered_map<int,int>::iterator it;
it=find(hm.begin(),hm.end(),x+c);
if (it!=hm.end())
{
bNotFound = false;
pair<int,int> p = *it;
ind = p.second;
}
有时编译器对错误消息的处理很糟糕。你的问题是 find
算法。
unordered_map
& map
有他们自己的 查找 ,它以 key 作为参数并且 returns 一个迭代器。算法是寻找密钥:
auto it = hm.find(key);
if (it != hm.end())
{
// ...
}
全局查找 算法将搜索区间和值作为输入。但它适用于满足某些迭代器约束的任何容器。在映射 的情况下,值不是键 ,就像在 unordered_map::find
中那样,而是(键,值)对。该算法正在 寻找 (key, value) 对。您可以声明您的目标值并像这样使用它:
unordered_map<int, int>::value_type target{ key, value };
auto it = find(hm.begin(), hm.end(), target);
if (it != hm.end())
{
// ...
}
以下代码无法编译。 带有 pair 的行给出了错误。是否有其他方式访问数据或者是这个 方法正确??
unordered_map<int,int> hm;
unordered_map<int,int>::iterator it;
it=find(hm.begin(),hm.end(),x+c);
if (it!=hm.end())
{
bNotFound = false;
pair<int,int> p = *it;
ind = p.second;
}
有时编译器对错误消息的处理很糟糕。你的问题是 find
算法。
unordered_map
& map
有他们自己的 查找 ,它以 key 作为参数并且 returns 一个迭代器。算法是寻找密钥:
auto it = hm.find(key);
if (it != hm.end())
{
// ...
}
全局查找 算法将搜索区间和值作为输入。但它适用于满足某些迭代器约束的任何容器。在映射 的情况下,值不是键 ,就像在 unordered_map::find
中那样,而是(键,值)对。该算法正在 寻找 (key, value) 对。您可以声明您的目标值并像这样使用它:
unordered_map<int, int>::value_type target{ key, value };
auto it = find(hm.begin(), hm.end(), target);
if (it != hm.end())
{
// ...
}