地图键没有可行的重载“=”错误
No viable overloaded '=' error with map key
我在尝试执行以下操作时遇到此错误
Rellotge nclock(request, mclock);
if (oldclock < nclock) (iteratorValue[tasknum-1])->first = nclock;
iteratorValue是一个map字典,map的key和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 is a sorted associative container that contains key-value pairs with unique keys. Keys are sorted by using the comparison function Compare. Search, removal, and insertion operations have logarithmic complexity. Maps are usually implemented as red-black trees
注意突出显示的点,它们是您无法更改字典键的原因的键。
- 由于它是一个排序的容器,使用键对元素进行排序以加快查找速度,在任何时候更改键都会破坏容器,因为您最终会使所有排序无效。
- 通过更改密钥,您可能会在容器不知情的情况下复制 密钥元素,这会破坏唯一密钥保证。
如果您需要更改密钥,您可能希望从地图上删除旧项目并使用新的所需密钥插入另一个项目。您可能想要交换与现有键关联的值元素。
我在尝试执行以下操作时遇到此错误
Rellotge nclock(request, mclock);
if (oldclock < nclock) (iteratorValue[tasknum-1])->first = nclock;
iteratorValue是一个map字典,map的key和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 is a sorted associative container that contains key-value pairs with unique keys. Keys are sorted by using the comparison function Compare. Search, removal, and insertion operations have logarithmic complexity. Maps are usually implemented as red-black trees
注意突出显示的点,它们是您无法更改字典键的原因的键。
- 由于它是一个排序的容器,使用键对元素进行排序以加快查找速度,在任何时候更改键都会破坏容器,因为您最终会使所有排序无效。
- 通过更改密钥,您可能会在容器不知情的情况下复制 密钥元素,这会破坏唯一密钥保证。
如果您需要更改密钥,您可能希望从地图上删除旧项目并使用新的所需密钥插入另一个项目。您可能想要交换与现有键关联的值元素。