版权声明:欢迎评论与转载,转载时请注明出处! https://blog.csdn.net/wjl_zyl_1314/article/details/84330859
一、集合set的介绍
之所以称为集合,就是因为set与数学中的集合一样,存在互异性,也就是每一个元素只允许出现一次。set的特性是:所有元素都会根据元素的键值自动排序,set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值。set不允许两个元素有相同的键值。自己写的类型,需要重新定义<的意义。
二、set的声明及初始化
c++中使用set需要包含#include <set>
#inlcude <set>
set<T> a; //T为各种数据类型
T src[20];
set<T>b(src,src+sizeof(src)/sizeof(*T));/
/利用已有数据源初始化集合a,两个形参分别是初始数据的开始地址以及结束地址
三、集合set的访问
set 的成员函数 find() 会返回一个和参数匹配的元素的迭代器。如果对象不在 set 中,会返回一个结束迭代器。
调用成员函数 count() 可以返回指定键所对应的元素个数,返回值通常是 0 或 1,因为 set 容器中的元素是唯一的。
四、集合set的遍历
第一种方式:(利用迭代器遍历)
set<int>::iterator iter;
for(iter=a.begin();iter!=a.end();iter++)
{
cout<<*iter<<endl;
}
第二种方式:(利用反向迭代器遍历)
set<int>::reverse_iterator riter;
for(riter=a.rbegin();riter!=a.rend();riter++)
{
cout<<*riter<<endl;
}
五、集合set常用函数
1. begin()--返回指向第一个元素的迭代器
2. clear()--清除所有元素
3. count()--返回某个值元素的个数
4. empty()--如果集合为空,返回true
5. end()--返回指向最后一个元素的迭代器
6. equal_range()--返回集合中与给定值相等的上下限的两个迭代器
7. erase()--删除集合中的元素
a.erase(val);//删除键值val
8. find()--返回一个指向被查找到元素的迭代器
9. get_allocator()--返回集合的分配器
10. insert()--在集合中插入元素
a.insert(pos,val);//在pos位置添加值val,位置不重要,因为插入后,set会自动排序
11. lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器
12. key_comp()--返回一个用于元素间值比较的函数
13. max_size()--返回集合能容纳的元素的最大限值
例如set<int> a; a.max_size返回的就是整型的上界214748364
14. rbegin()--返回指向集合中最后一个元素的反向迭代器
15. rend()--返回指向集合中第一个元素的反向迭代器
16. size()--集合中元素的数目
17. swap()--交换两个集合变量
18. upper_bound()--返回大于某个值元素的迭代器
19. value_comp()--返回一个用于比较元素间的值的函数
总结以方便你我!
若有未讲解清楚的或没有讲到的,欢迎评论留言!