map & multimap
Insert
For map:
For multimap
可觀察到在 map 和 multimap 當中,insert 都會回傳 iterator,而傳入的參數都是 iterator 和要 insert 的 value。對於 map 來說,常見的 insert 方式是可參考 std::map::insert。而 __tree
就是 C++ 中的 Red Black Tree。
造成 map 不能有 duplicate key 而 multimap 可以的就是 __insert_unique
和 __insert_multi
的差別。
hint 就是我們傳入的 iterator
__insert_unique
會回傳 __emplace_hint_unique
,__emplace_hint_unique
會回傳__emplace_hint_unique_extract_key
,__emplace_hint_unique_extract_key
會回傳 __emplace_hint_unique_impl
:
重點在於 __find_equal
:
而 __emplace_hint_multi
定義如下,重點在於 __find_leaf
: