版本: C++ 11
参考网站:https://www.cplusplus.com/reference/map/map/erase/
问题(Question):
我们都知道map是用红黑树实践的,
但关于map.erase(),我这边有两个问题想请教各位高手:
1. 假设map.erase的引数是叠代器,代表我已经事先知道特定的node位置,
但红黑树已经指到node,经过erase之后,还是要执行“重新平衡”的动作,
这样是否真的如同网站所写,erase(iter)是逼近常数时间?
2. 另外 iter2 = map.erase(iter),iter2应该是指到iter的下一个数字,
但这是一颗红黑树,当我们把iter所指到的节点删掉后,
红黑树的节点分布应该会有若干变化,很好奇iter2是透过什么方式找到的?
想请问是否有比较详细的解释,
或是不知道去哪看这段程式码?
谢谢大家