STL:set用法总结

一、Set介绍

除了没有单独的键,set 容器和 map 容器很相似。

定义 set 容器的模板如下四种:

  • set<T> 容器保存 T 类型的对象,而且保存的对象是唯一的。其中保存的元素是有序的,默认用 less<T> 对象比较。可以用相等、不相等来判断对象是否相同。有序,底层红黑树
  • multiSet<T> 容器和 set<T> 容器保存 T 类型对象的方式相同,但它可以保存重复的对象。有序,底层红黑树
  • unorderd_set<T> 容器保存 T 类型的对象,而且对象是唯一的。元素在容器中的位置由元素的哈希值决定。默认用 equal_to<T> 对象来判断元素是否相等,无序的,底层哈希表。
  • unordered_multiset<T> 容器保存 T 类型对象的方式和 unorderd_set<T> 相同,但可以保存重复的对象。无序,底层哈希表。

定义 set 的模板有 4 种,其中两种默认使用 less<T> 来对元素排序,另外两种使用哈希值来保存元素。有序 set 的模板定义在 set 头文件中。无序 set 的模板定义在 unordered_set 头文件中。因此有序 set 包含的元素必须支持比较运算,无序 set 中的元素必须支持哈希运算。

从有序和无序关联容器获取的各种迭代器之间有一些区别。我们可以从有序容器得到正向和反向迭代器,但是只能从无序容器得到正向迭代器。
一般来说,当 set 中有大量元素时,在无序 set 上执行的随机插入和检索操作要比有序 set 快。在有 n 个元素的有序 set 中检索元素的时间复杂度是 logn。在无序 set 中检索元素的平均时间复杂度是常量O(1),这和元素的个数无关,尽管实际性能会受元素哈希操作和内部组织效率的影响。

二、Set常用函数

s.begin()      返回set容器的第一个元素
s.end()      返回set容器的最后一个元素
s.clear()       删除set容器中的所有的元素
s.empty()     判断set容器是否为空
s.insert()      插入一个元素
s.erase(it)       删除一个元素
s.size()     返回当前set容器中的元素个数

equal_range():返回一对定位器,分别表示

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值