stl_set

//不允许相同值得set
//#include<rb_tree.h>
//#include<stl_function.h>

template<class key , class Compare = less<key>>//默认状态下按递增排序
class set
{
public:
    typedef key key_type;
    typedef key value_type;
    typedef Compare key_compare;
    typedef Compare value_compare;
private:
    typedef rb_tree<key_type, value_type, identity<value_type>, key_compare> rep_type;
    rep_type t;
public:
    typedef typename rep_type::const_pointer pointer;
    typedef typename rep_type::const_pointer const_pointer;
    typedef typename rep_type::const_reference reference;
    typedef typename rep_type::const_reference const_reference;
    typedef typename rep_type::const_iterator iterator;
    typedef typename rep_type::const_iterator const_iterator;
    typedef typename rep_type::size_type size_type;
    typedef typename rep_type::difference_type difference_type;

    set():t(Compare){}
    explicit set(const Compare& comp):t(conp){}

    template<class I>
    set(I first, I last) : t(Compare())
    {
        t.insert_unique(first, last);
    }

    template<class I>
    set(I first, I last,const Compare& cmp) : t(cmp)
    {
        t.insert_unique(first, last);
    }

    set(const set<key, Compare >& x) :t(x.t){}
    set<key, Compare >&operator =(const set<key, Compare>& x)
    {
        t = x.t;
        return *this;
    }

    key_compare key_comp()const
    {
        return t.key_comp();
    }
    value_compare key_comp()const
    {
        return key_comp();
    }
    iterator begin() const
    {
        return t.begin();
    }

    iterator end() cosnt
    {
        return t.end();
    }
    bool empty() const 
    {
        return t.empty();
    }

    size_type size() cosnt
    {
        return t.size();
    }
    size_type max_size() cosnt
    {
        return t.max_size();
    }

    typedef pair<iterator, bool> pair_iteartor_bool;
    pair<iterator, bool > insert(const value_typed& x)
    {
        pair<typename rep_type::iterator, bool>p = t.insert_unique(x);
        return pair<iterator, bool>(p.first, p.second);
    }
    iterator insert(iterator position, const value_type & x)
    {
        typedef typename rep_type::iterator rep_iterator;
        return t.insert_unique((rep_iterator&)position x);
    }
    template<class I>
    void insert(I first, I last)
    {
        t.insert_unique(first, last);
    }
    size_type erase(const key_type& x)
    {
        return t.erase(x);
    }
    void clear()
    {
        t.clear();
    }

};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值