首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

对于std:map,如果修改 iterator->first, 会不会有不良后果?该怎么解决

2012-03-28 
对于std::map,如果修改 iterator-first, 会不会有不良后果?对于std::map,如果修改iterator- first,会不

对于std::map,如果修改 iterator->first, 会不会有不良后果?
对于std::map,如果修改   iterator-> first,   会不会有不良后果?


[解决办法]
直接修改first,编译不会通过。不过可以用second相同的新元素替换掉旧元素。
[解决办法]
map内部的元素是 pair <const key, T> 所以你根本没权修改
[解决办法]
const的问题可以用const_cast绕过
至于不良后果,要看具体的stl实现怎么处理的
一般内部是用rb-tree实现的,如果iterator-> first是直接引用的rb-tree的key
那么通常修改之的后果是灾难性的
反之,如果不会触及到rb-tree的key,那么改了跟没该一样
[解决办法]
map的first是不重复的,所以不允许直接修改,所以把key定义为const

热点排行