C++无序列图
C++ Unordered Map
我有一个程序,我正在使用迭代器来访问映射条目的值。
#include <iostream>
#include <cstdio>
#include <unordered_map>
#include <utility>
#include <algorithm>
using namespace std;
int main()
{
int a[]={1,2,4,7,9,3,3,55,66,88,11};
int k = 58;
unordered_map<int,int> c;
int i=0;
for(auto x: a)
{
c.insert(make_pair(x,i));
i++;
}
for(auto x: c)
{
if(c.count(k-x.first)==1) printf("%d %dn",x.second,(c.find(k-x))->second);
}
}
在行中:
if(c.count(k-x.first)==1) printf("%d %dn",x.second,(c.find(k-x))->second);
我收到错误,尤其是在c.find()->second
.我认为这是从迭代器访问元素的方法。怎么了?
你不能说
c.find(k-x)
因为k
是int
,x
是std::pair<int, int>
.你是说这两个中的一个吗?
c.find(k - x.first)
或
c.find(k - x.second)
作为旁注,直接从find
中取消引用返回的迭代器通常是不安全的,因为如果find
返回.end()
(例如,它没有找到具有该键的元素),那么您就有问题了。
相关文章:
- 递归无序映射
- c++找不到具有相同哈希的无序集合元素
- 正在将无序映射设置为无序映射的值
- 智能指针作为无序映射键,并通过引用进行比较
- 如何使用set实现无序数据结构?
- 如何写向量的无序向量集,即unordered_set<向量<向量<int>>集合?
- 如何禁用 CPU 的无序执行
- 从C++无序集合中高效提取元素
- 打印无序映射的第二个元素,即集合
- 当我将其插入无序地图时,矢量的容量为 0
- 代码块中无序多集的编译错误17.12
- 由并发无序映射查找线程调用的函数是否安全?
- 如何按值对无序哈希映射进行排序
- gtest 期望无序元素与自定义比较器/匹配器一起使用
- 将大数字(10-12 位数字)存储在无序映射中<字符串,整数>
- 使用无序映射在STL中存储键值对
- 为C++中的无序映射获取给定输入键的错误值
- 如何将一个单词拆分成字母,并将它们放入一个无序的列表/集合中
- 将大型对象存储在无序映射中是否效率低下
- 仅从无序集合中删除一个项目