c++中集合set的基本操作及用法

版权声明:欢迎评论与转载,转载时请注明出处! 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()--返回一个用于比较元素间的值的函数

总结以方便你我!
若有未讲解清楚的或没有讲到的,欢迎评论留言!

猜你喜欢

转载自blog.csdn.net/wjl_zyl_1314/article/details/84330859