关于map的erase和lower_bound
本人因做某题执着要用map才导致了杯具
map的erase
删除map中的元素(应该是真删了)
这是这个元素在map中的映射就会消失了
解除是解除了,但是,当你再用这个元素的时候它就又出现了,不管你是用它来干什么了它都会重新建立一个映射
比如,你用erase把3这个key的映射给删了,这时不管你用lower_bound还是find都是返回end()找不到它的
但如果你想判断它的话,他就会和0建立一个映射,也就是说你查询3会返回0,这就意味着3在map中又出现了,这是你在用find和lower_bound找就会找到3并返回了
综上,如果你用erase删掉了一个元素,并且不想在后面的使用中查询到它,就不要用my_map[这个元素]来判断它是否存在,你可以用find或者lower_bound来判断,不存在就返回end()
map的lower_bound
这就是很单纯的找大于等于x的第一个key
会了erase然后就可以用lower_bound找到比它大的值,然后it--就是比它小的值了
然后就没有然后了
还有upper_bound也行
                    
                
                
            
        
浙公网安备 33010602011771号