地图键没有可行的重载'='错误
No viable overloaded '=' error with map key
在尝试执行以下操作时出现此错误
Rellotge nclock(request, mclock);
if (oldclock < nclock) (iteratorValue[tasknum-1])->first = nclock;
iteratorValue是一个map字典,map的键与nclock的类型相同。
Agenda.cc:65:70: error: no viable overloaded '=' if (oldclock < nclock) (iteratorValue[tasknum-1])->first = nclock;
std::map<Key, T>
字典中元素的类型为一对,如下所示
using value_type = std::pair<const Key, T>;
注意键是常量元素,不能更改,这是有原因的
std::map是一个排序的关联容器,包含具有唯一键的键值对。键通过比较函数Compare进行排序。搜索、删除和插入操作具有对数复杂度。映射通常以红黑树的形式实现
注意突出显示的点,它们是键,因为您不能更改字典的键。
- 由于它是一个排序容器,使用键来对元素进行排序以更快地查找,因此在任何时候更改键都会破坏容器,因为您最终会使所有排序无效。
- 通过更改密钥,您可能在容器不知道的情况下复制密钥元素,这将破坏唯一密钥保证。
如果您需要更改一个键,您可能希望将旧的项从映射中擦除,并插入另一个具有所需的新键的项。您可能希望交换与现有键关联的value元素。
相关文章:
- 错误 没有与参数列表匹配的重载函数"getline"实例
- 在运算符重载定义中使用成员函数(const错误)
- 重载方法的方式会在使用临时调用时生成编译器错误
- 数组索引重载错误
- C++:需要帮助了解运算符重载错误
- 在类Bat代码中,这给了我错误:重载的"Bat()"的调用是不明确的Bat(;)
- 不明确的错误重载运算符<<QdataStream 子类和个人类
- 具有相同参数的不同模板模板参数的错误重载函数
- 编译错误:重载函数的多个实例与 arument 列表匹配
- clang-libc++错误:重载解析选择了隐式删除的复制赋值运算符
- 错误:重载的调用不明确
- C++ 编译器选择输出流运算符<<的错误重载
- 分段错误重载运算符<<
- 错误:重载函数的多个实例与参数列表匹配
- 错误:重载的“max(int, int)”的调用不明确
- C++编译器选择类成员函数的错误重载
- 编译错误:重载操作符()
- 错误:重载的“bind(int(Class::*)(int,int),Class*,int,int”的调用不明确
- 未解析的外部符号错误重载操作符+模板
- 错误重载在构建"OpenSubdiv"时具有类似的转换