STL源码剖析(十五)关联式容器之map、multimap
文章目录
map 和 multimap 每个元素都是一个对组,有 key 也有 dada
map 和 multimap 的主要区别是,map 键值不可以重复,multimap 可以
一、map、multimap的数据结构
template <class Key, class T, class Compare = less<Key>, class Alloc = alloc>
class map {
public:
typedef Key key_type;
typedef T data_type;
typedef pair<const Key, T> value_type;
...
private:
typedef rb_tree<key_type, value_type,
select1st<value_type>, key_compare, Alloc> rep_type;
rep_type t; // red-black tree representing map
...
};
map 的成员函数只有一棵红黑树,基本上所有的操作依赖于它,要搞懂 map 的数据结构,首先需要先弄懂指定给红黑树的这些模板参数
红黑树的模板参数定义如下
template <class Key, class Value, class KeyOfValue, class Compare,
class Alloc = alloc>
class rb_tree {
...
};
-
Key表示键值,在