读书人

对于std:map,如果修改 iterator-gt;firs

发布时间: 2012-03-28 15:40:03 作者: rapoo

对于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

读书人网 >C++

热点推荐