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