STL标准模板库 --- set

c++ set集合的使用方法详解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/z956281507/article/details/70739889

set集合是c++ stl库中自带的一个容器,set具有以下两个特点:

1、set中的元素都是排好序的

2、set集合中没有重复的元素

常用操作:

begin()    返回set容器的第一个元素的地址

end()      返回set容器的最后一个元素地址

clear()    删除set容器中的所有的元素

empty()     判断set容器是否为空

max_size()   返回set容器可能包含的元素最大个数

size()      返回当前set容器中的元素个数

erase(it) 删除迭代器指针it处元素

insert(a) 插入某个元素

  1. #include<stdio.h>
  2. #include<set>
  3. using namespace std;
  4. int main()
  5. {
  6. set<int>s;
  7. s.insert(3);
  8. s.insert(1);
  9. s.insert(2);
  10. s.insert(1);
  11. set<int>::iterator it;
  12. for(it=s.begin();it!=s.end();it++) //使用迭代器进行遍历
  13. {
  14. printf("%d\n",*it);
  15. }
  16. return 0;
  17. }
  18. //输出结果 : 1 2 3 一共插入了4个数,但是集合中只有3个数并且是有序的,可见之前说过的set集合的两个特点,有序和不重复。

当set集合中的元素为结构体时,该结构体必须实现运算符‘<’的重载

  1. #include<stdio.h>
  2. #include<set>
  3. #include<string>
  4. using namespace std;
  5. struct People
  6. {
  7. string name;
  8. int age;
  9. bool operator <(const People p) const //运算符重载
  10. {
  11. return age<p.age; //按照年龄由小到大进行排序
  12. }
  13. };
  14. int main()
  15. {
  16. set<People>s;
  17. s.insert((People){"张三",14});
  18. s.insert((People){"李四",16});
  19. s.insert((People){"王二麻子",10});
  20. set<People>::iterator it;
  21. for(it=s.begin();it!=s.end();it++) //使用迭代器进行遍历
  22. {
  23. printf("姓名:%s 年龄:%d\n",(*it).name.c_str(),(*it).age);
  24. }
  25. return 0;
  26. }
  27. /*
  28. 输出结果
  29. 姓名:王二麻子 年龄:10
  30. 姓名:张三 年龄:14
  31. 姓名:李四 年龄:16
  32. */

可以看到结果是按照年龄由小到大的顺序排列。
posted @ 2019-09-21 11:41  Cherish486  阅读(23)  评论(0编辑  收藏  举报