std::set简单介绍和使用

STL中的关联容器: std::set

template < class T,                        // set::key_type/value_type
           class Compare = less<T>,        // set::key_compare/value_compare
           class Alloc = allocator<T>      // set::allocator_type
           > class set;

set是关联容器。它的key就是value,value就key,key不能重复,所以不能通过set的迭代器来改变set中元素的值。
set有一个重要的特性:进行元素的插入或删除之后,原来的迭代器依然有效。
set的底层结构是红黑树。

上面的Compare应该是一个functor(仿函数), 重载了()操作符,用于set内元素的排序。

 

使用示例:

class lex_compare {
    bool operator ()(const int64_t& lhs, cosnt int64_t& rhs) {
        stringstream s1, s2;
        s1 << lhs;
        s2 << rhs;
        return s1.str() < s2.str();
    }
};

std::set<int64_t, lex_compare> s;

参考:
1.http://www.cplusplus.com/reference/set/set/?kw=set
2.http://stackoverflow.com/questions/2620862/using-custom-stdset-comparator
posted @ 2015-12-06 16:58  onemuji  阅读(4757)  评论(0编辑  收藏  举报