set 是 C++ STL 中关于集合的库,和数学上的集合一样,元素具有唯一性,默认对元素从小到大进行排列。 注:multiset 中集合元素可以重复
能够进行一些集合操作,比如求交,并,差 等等。
一些基本操作
和其他大多数 STL 用法一样
初始化
默认是从小到大排序的,但我们可以这样强行让它从大到小排序
set<int, greater<int> >
,其实默认的也等价于 set<int, less<int> >
,第二个参数其实就是比较函数。
如何把一个数组强行转成 set 呢?像这样 set<int> s(a, a + n)
,就是把数组中下标为 0 到 n 的元素转到 set 中存起来。
所以初始化一个 set 时,可以直接用地址。
当然也可以复制另一个 set,比如 set<int> sb(sa)
迭代器
前向迭代器
嗯,这样是正向从前往后依次输出集合内的元素。
反向迭代器
emmm,感觉没什么用。
修改
set 并没有修改这个东西,还是老老实实删除再重新插入吧。
一些高端操作
成员函数表格
我才不会告诉你是从网上偷的
Member functions | Definition |
---|---|
begin() | 返回指向第一个元素的迭代器 |
clear() | 清除所有元素 |
count() | 返回某个值元素的个数 |
empty() | 如果集合为空,返回true |
end() | 返回指向最后一个元素的迭代器 |
equal_range() | 返回集合中与给定值相等的上下限的两个迭代器 |
erase() | 删除集合中的元素 |
find() | 返回一个指向被查找到元素的迭代器 |
get_allocator() | 返回集合的分配器 |
insert() | 在集合中插入元素 |
lower_bound() | 返回指向大于(或等于)某值的第一个元素的迭代器 |
key_comp() | 返回一个用于元素间值比较的函数 |
max_size() | 返回集合能容纳的元素的最大限值 |
rbegin() | 返回指向集合中最后一个元素的反向迭代器 |
rend() | 返回指向集合中第一个元素的反向迭代器 |
size() | 集合中元素的数目 |
swap() | 交换两个集合变量 |
upper_bound() | 返回大于某个值元素的迭代器 |
value_comp() | 返回一个用于比较元素间的值的函数 |