繁体   English   中英

不知道映射中是否存在键时,如何从映射中修改键值对的值?

[英]How to modify the value of a key-value Pair from a map while I do not know whether the key is exist in the map?

在不知道键是否存在于地图中的情况下,如何从地图修改键值对的vlaue?

例如,地图中有一个键/值对:

a[5]   =    " H ";

//但是经过一些操作,例如插入,擦除等; 我不知道地图中是否还存在5,我可以这样修改它吗:

a[5]   =   " G ";

//否则我必须定义iteraotr pos

pos = my_map.find(5);
if( pos !=  my_map.end())
{
 pos->second   =   " G ";
}

我还有其他方法可以从地图修改键值对的值吗??? 谢谢!!!

如果要设置该值是否存在,请继续使用下标运算符:

a[5] = " G ";

如果不存在,它将创建一个新的映射。 这是由C ++标准保证的。

标准映射具有好奇的属性,即索引到映射中不存在的元素会导致在该键和默认构造值之间创建关联。 因此,如果元素5在映射中不作为键出现,则在执行a[5]之后,该元素将存在并与一个空字符串关联。

C ++ 11添加了一个新的at方法,如果该键在映射中不存在,则抛出该异常,这使得可以索引到const map

在带有find()的示例中,您可以通过返回的迭代器修改值:

pos->second = " G ";

如果只想修改它已经存在,则应该使用这种方法,因为operator[]将创建一个新条目(如果当前不存在)。 如果要添加或修改它,请使用operator[]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM