概念
set
作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set
中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是set
中数元素的值不能直接被改变。C++ STL中标准关联容器set, multiset, map, multimap
内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也称为RB
树(Red-Black Tree
)。RB
树的统计性能要好于一般平衡二叉树,所以被STL选择作为了关联容器的内部结构。
头文件
1 |
名字空间
1 | std |
构造函数
定义:
1 | set<Type> |
常用函数
begin
语法:
1 | iterator begin(); |
返回指向当前集合中第一个元素的迭代器。
clear
语法:
1 | void clear(); |
清除当前集合中的所有元素。
count
语法:
1 | size_type count( const key_type &key ); |
返回当前集合中出现的某个值的元素的数目。
empty
语法:
1 | bool empty(); |
如果当前集合为空,返回true
;否则返回false
。
end
语法:
1 | const_iterator end(); |
返回指向当前集合中最后一个元素的迭代器。
equal_range
语法:
1 | pair equal_range( const key_type &key ); |
返回集合中与给定值相等的上下限的两个迭代器。
erase
语法:
1 | void erase( iterator i ); |
说明:
- 删除
i
元素; - 删除从
start
开始到end
结束的元素; - 删除等于
key
值的所有元素(返回被删除的元素的个数)。
find
语法:
1 | iterator find( const key_type &key ); |
在当前集合中查找等于key
值的元素,并返回指向该元素的迭代器;如果没有找到,返回指向集合最后一个元素的迭代器。
get_allocator
语法:
1 | allocator_type get_allocator(); |
返回当前集合的分配器。
insert
语法:
1 | iterator insert( iterator i, const TYPE &val ); |
说明:
- 在迭代器
i
前插入val
; - 将迭代器
start
开始到end
结束返回内的元素插入到集合中; - 在当前集合中插入
val
元素,并返回指向该元素的迭代器和一个布尔值来说明val
是否成功的被插入了。
(应该注意的是在集合(Sets
)中不能插入两个相同的元素。)
lower_bound
语法:
1 | iterator lower_bound( const key_type &key ); |
返回一个指向大于或者等于key
值的第一个元素的迭代器。
key_comp
语法:
1 | key_compare key_comp(); |
返回一个用于元素间值比较的函数对象。
max_size
语法:
1 | size_type max_size(); |
返回当前集合能容纳元素的最大限值。
rbegin
语法:
1 | reverse_iterator rbegin(); |
返回指向当前集合中最后一个元素的反向迭代器。
rend
语法:
1 | reverse_iterator rend(); |
返回指向集合中第一个元素的反向迭代器。
size
语法:
1 | size_type size(); |
返回当前集合中元素的数目。
swap
语法:
1 | void swap( set &object ); |
交换当前集合和object集合中的元素。
upper_bound
语法:
1 | iterator upper_bound( const key_type &key ); |
在当前集合中返回一个指向大于Key值的元素的迭代器。
value_comp
语法:
1 | value_compare value_comp(); |
返回一个用于比较元素间的值的函数对象。