C++ stl之set容器

来源:互联网 发布:淘知学堂教材全解 编辑:程序博客网 时间:2024/05/16 15:52


set容器,即集合容器,在stl中并不显眼,相比于常用的map,vector,之类的容器,并不常用,只是只有在使用集合,这一个常用的数学工具,set才会显得有意义.

set有一个兄弟容器multiset,setmultiset的区别是:set插入的元素在相同时在保留一个,但是multiset着允许容器中有相同的元素

set容器描述了一个控制变长元素序列的对象的模板类。对这个序列可以进行查找、插入、删除序列中的任意一个元素,而完成这些操作的时间同这个序列中元素个数的对数成比例关系(即log n).原因在于set容器与map类似,采用红黑树作为数据结构,因此采用insert操作时,迭代器不失效.

有意思的是,虽然set看起来是单个元素的集合体,但实际上与map类似在set中有键(key)又有值(value),但是迭代器返回的是value,而key是用于比较的

与map类似,set必须是严格弱排序( strict weak ordering),在判断的时候会用"<",而不是"<=",一旦"<"成立便认为存在"<"关系,返回ture,而忽略了"="关系和">"区别,把它们归结为false"。其存在下述性质

1、非对称,若A<B为真,则B<A为假。
2、可传递,若A<B,B<C,则A<C。
3、A<A永远为假。

在set(map)中有两个参数key_compare,value_compare值得就是返回key与value的比较器,使用key_comp,和value可以返回比较结果.

想要了解有关set的操作可以参见点击打开链接

0 0
原创粉丝点击