在具有枚举键的映射中使用整数作为键
Using integers as key in map which has enum key
enum aaa {a, b, c};
std::map <aaa, int> container;
container[0]; //compilation error
我知道在这种情况下容器是空的,我会得到段错误,但这不是问题。枚举是算术类型,为什么会有问题?
你在这两方面都错了。 :)
int
不能隐式转换为enum
,需要显式强制转换,并且您不会得到段错误,因为container[0]
会在映射中值初始化一个新值。
容器的密钥类型为 aaa
。0
的类型是 int
. int
不能隐式转换为aaa
,因此你会得到一个编译器错误。
编译器
期望密钥的类型为 aaa
。所以你需要写container[a]
而不是你做什么。
相关文章:
- 碱基对映射 - 将 argv[i] 移动到整数或字符作为输入
- 整数键映射到头文件中的成员函数指针
- 如何将整数向量插入到键中,标准::映射的值
- 将大数字(10-12 位数字)存储在无序映射中<字符串,整数>
- 自定义哈希表实现-将字符串映射到整数时出现内存错误
- 将整数范围映射到另一个范围
- 当 map 是一个整数数组并且由 operator[] 创建时,它是否初始化其映射类型
- 从文件读取到映射中,该映射将键作为整数,并将相应的值设置为设置
- 如何使用 std::multimap 将整数键映射到两个用作多维数组坐标的整数值(对于井字)?
- 整数和元组的静态 STL 映射返回 0
- 如何将字符设置为函数?我对语法感到困惑...设置<char>max_freq(映射<字符,整数>频率)
- C++:使用一对(cpp_int,int)整数作为无序映射中的键(其中cpp_int是boost多精度整数)
- 如何打印包含整数和整数集的std::映射
- C++将一组整数变量映射到值的有效方法
- 如何访问映射的向量(整数和字符串的向量)
- 高效实现 64 位和 32 位无符号整数之间的双向映射
- 如何让整数映射到 C++ 中的类定义
- 计算一组关系的整数映射的更有效的算法
- 如何将两个正整数映射为一个唯一的整数
- 用于将整数映射到令牌的字符串的宏