template < class Key, // map::key_type
class T, // map::mapped_type
class Compare = less<Key>, // map::key_compare
class Alloc = allocator<pair<const Key,T> > // map::allocator_type
> class map;
Maps are associative containers that store elements formed by a combination of a key value and a mapped value, following a specific order.
👉 맵은 특정 순서에 따라 키 값과 매핑된 값의 조합으로 형성된 요소를 저장하는 연관 컨테이너
In a map, the key values are generally used to sort and uniquely identify the elements, while the mapped values store the content associated to this key. The types of key and mapped value may differ, and are grouped together in member type value_type, which is a pair type combining both: typedef pair<const Key, T> value_type;
👉 key는 고유한 식별자. value는 key에 따라 저장되는 값. key와 mapped value의 유형은 다를 수 있음.
Internally, the elements in a map are always sorted by its key following a specific strict weak ordering criterion indicated by its internal comparison object (of type Compare).
👉 내부 비교 object에 의해 map 안의 원소들은 key에 따라 항상 정렬됨.
map containers are generally slower than unordered_map containers to access individual elements by their key, but they allow the direct iteration on subsets based on their order.
👉
36byte
여야 할 것 같은데40byte
가 된다.// single element (1)
pair<iterator,bool> insert (const value_type& val);
// with hint (2)
iterator insert (iterator position, const value_type& val);
// range (3)
template <class InputIterator> void insert (InputIterator first, InputIterator last);
// (1)
void erase (iterator position);
// (2)
size_type erase (const key_type& k);
// (3)
void erase (iterator first, iterator last);
_bst.rbDelete(position._node)
로 바로 사용해줬음it = first++
를 이용해 it에는 first가 업데이트 되기 전 값이 담기고 first 자체는 다음 노드로 넘어가 있게 해서 delete가 꼬이지 않게 해줬음ft::swap
을 이용해 rbtree의 멤버변수들을 각각 swap 해줬음value_compare(key_compare comp)
밖에 없어서 return value_compare(key_compare());
해줘야 함같거나 큰
키가 처음 나타나는 노드의 iterator 반환.큰
키가 처음 나타나는 노드의 iterator 반환.