STL源码剖析-map/multimap容器

本文主要简易分析STL-SGI的map源码分析。

本文承接:
STL关联容器-红黑树:https://blog.csdn.net/haluoluo211/article/details/80877064

map中对于rb_tree(源码分析)而言key, value不一样,key用于rb_tree排序,pair才是rb_tree的节点,同样成员就一个rb_tree足已表现整个map

template >
class map{
    // 用于re_tree排序
    typedef Key    key_type;
    // rb_tree节点的value
    typedef std::pair value_type;

    typedef Compare key_compare;

    // 对于map而言,Key, Value类型不一样,一个排序,另一个节点实值
    typedef rb_tree1 rep_type;

    // map的成员变量
    rep_type t;
};

构造函数:

map():t(Compare()){}

template
map(InputIterator first, InputIterator last):t(Compare()){
        // 直接调用rb_tree的insert_unique
        t.insert_unique(first, last);
}

插入函数:

typedef typename rep_type::const_iterator iterator;
std::pair insert(const value_type& v){
    return t.insert_unique(v);
};

基本都是调用rb_tree的底层操作函数。

定义和multimap容器和map基本相同,只不过插入调用的是函数:insert_equal, 允许插入相同的值。

你可能感兴趣的:(STL源码剖析)