STL之set,multiset

  • 头文件及声明
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <set>
    namespace std
    {
    template <typename T,
    typename Compare = less<T>,
    typename Allocator = allocator<T>>
    class set;

    template <typename T,
    typename Compare = less<T>,
    typename Allocator = allocator<T>>
    class multiset;
    }
  • 内部结构及其特性

内部结构用红黑树实现,set和multiset并不提供直接的元素存取,而是要用迭代器。迭代器是双向迭代器。

创建时必须传入一个比较准则,若无则用less<T>,可以在模板参数的时候传入,也可以作为一个构造函数的参数传入。

注意set的insert(val)返回的是一个pair类型的值,pair<iterator, bool>来指示是否插入成功。而multiset只返回迭代器,因为set内不允许重复值出现。