multiset不同于set,其内部可以保存多个key值相同的变量。其实现也是依靠红黑树完成,其实红黑树本身是可以存储相同元素的,插入一个重复值并不会对红黑树造成结构错误。在其实现中,提供了唯一插入这一操作来实现key值唯一的结构,也提供了可重复插入这一操作,来实现multiple key结构。
container
multiset的定义与set完全一致,其定义如下
- 其包含数据成员_M_t
template <typename _Key, typename _Compare = std::less<_Key>,
typename _Alloc = std::allocator<_Key> >
class multiset
{
public:
// typedefs:
typedef _Key key_type;
typedef _Key value_type;
typedef _Compare key_compare;
typedef _Compare value_compare;
typedef _Alloc allocator_type;
private:
/// This turns a red-black tree into a [multi]set.
typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template