STL中与比较器有关的容器和算法

 

一. set:包含了经过排序了的数据,这些数据的值(value)必须是唯一的。 

  • 头文件: #include<set>
  • 定义:定义一个元素为整数的集合a,可以用 set<int> a;
  • 基本操作:
  1. 对集合a中元素的有
  2. 插入元素:a.insert(1);
  3. 删除元素(如果存在):a.erase(1);
  4. 判断元素是否属于集合:if (a.find(1) != a.end()) ...
  5. 返回集合元素的个数:a.size()
  6. 将集合清为空集:a.clear()
  7. 集合的并,交和差

  set_union(a.begin(),a.end(),b.begin(),b.end(),insert_iterator<set<int> >(c,c.begin()));

  set_intersection(a.begin(),a.end(),b.begin(),b.end(),insert_iterator<set<int> >(c,c.begin()));

  set_difference(a.begin(),a.end(),b.begin(),b.end(),insert_iterator<set<int> >(c,c.begin()));

  (注意在此前要将c清为空集)。

  • 默认情况:输出的结果从小到大,即15, 25, 35, 55; 若要从大到小输出,则这样定义集合:set<Teacher, greater<Teacher>> teachers; 输出的结果为:55, 35, 25, 15。
  • 注意以下几点:
  1. 对于内置类型如int, double, float, string等,比较器以及输入输出操作符是系统已经定义好的;对于class, struct等类型,比较器即输入输出操作符都需重新写;如struct Teacher里面定义了比较器及重载输出操作符;
  2. set里面的元素有序且唯一,在默认的情况下,是按从小到大排序的;如果想让元素从大到小排序,则需要在定义集合时,模板参数中需加greater比较器,而且这里的参数是结构体本身,因此是greater<Teacher>,而不是对象greater<Teacher>();但是在sort函数中的比较器,则是对象。

 

 

  • 例子程序:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值