版本: 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是透過什麼方式找到的?
想請問是否有比較詳細的解釋,
或是不知道去哪看這段程式碼?
謝謝大家