[問題] C++ iter = map.earse(iter)的實作
版本: 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是透過什麼方式找到的?
想請問是否有比較詳細的解釋,
或是不知道去哪看這段程式碼?
謝謝大家
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.176.57.68 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1621517134.A.33C.html
→
05/20 22:23,
2年前
, 1F
05/20 22:23, 1F
→
05/20 22:23,
2年前
, 2F
05/20 22:23, 2F
推
05/21 02:39,
2年前
, 3F
05/21 02:39, 3F
→
05/21 02:39,
2年前
, 4F
05/21 02:39, 4F
→
05/21 02:40,
2年前
, 5F
05/21 02:40, 5F
→
05/21 02:41,
2年前
, 6F
05/21 02:41, 6F
→
05/21 02:41,
2年前
, 7F
05/21 02:41, 7F
→
05/21 02:42,
2年前
, 8F
05/21 02:42, 8F
→
05/21 02:44,
2年前
, 9F
05/21 02:44, 9F
→
05/21 02:45,
2年前
, 10F
05/21 02:45, 10F
→
05/21 02:46,
2年前
, 11F
05/21 02:46, 11F
→
05/21 02:46,
2年前
, 12F
05/21 02:46, 12F
→
05/21 02:48,
2年前
, 13F
05/21 02:48, 13F
→
05/21 02:48,
2年前
, 14F
05/21 02:48, 14F
→
05/21 02:49,
2年前
, 15F
05/21 02:49, 15F
→
05/21 02:50,
2年前
, 16F
05/21 02:50, 16F
→
05/21 02:50,
2年前
, 17F
05/21 02:50, 17F
→
05/21 02:51,
2年前
, 18F
05/21 02:51, 18F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
-17
28