> 文章列表 > 【C++进阶】set的介绍及使用

【C++进阶】set的介绍及使用

【C++进阶】set的介绍及使用

文章目录

  • set的介绍
  • set的结构
  • set的容器介绍
  • set重要容器接口的介绍及使用
    • 构造函数
    • 增删查
    • 迭代器的使用

set的介绍

  1. set是按照一定次序存储元素的容器
  2. 在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除它们。
  3. 在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则进行
    排序。
  4. set容器通过key访问单个元素的速度通常比unordered_set容器慢,但它们允许根据顺序对子集进行直接迭代。
  5. set在底层是用二叉搜索树(红黑树)实现的。

注意:

  1. 与map/multimap不同,map/multimap中存储的是真正的键值对<key, value>,set中只放value,但在底层实际存放的是由<value, value>构成的键值对。
  2. set中插入元素时,只需要插入value即可,不需要构造键值对。
  3. set中的元素不可以重复(因此可以使用set进行去重)。
  4. 使用set的迭代器遍历set中的元素,可以得到有序序列
  5. set中的元素默认按照小于来比较
  6. set中查找某个元素,时间复杂度为:log2nlog_2 nlog2n
  7. set中的元素不允许修改(为什么?)
  8. set中的底层使用二叉搜索树(红黑树)来实现。。

set的结构

【C++进阶】set的介绍及使用

set的容器介绍

【C++进阶】set的介绍及使用
【C++进阶】set的介绍及使用
【C++进阶】set的介绍及使用
【C++进阶】set的介绍及使用
【C++进阶】set的介绍及使用
【C++进阶】set的介绍及使用

set重要容器接口的介绍及使用

构造函数

【C++进阶】set的介绍及使用
【C++进阶】set的介绍及使用

【C++进阶】set的介绍及使用
【C++进阶】set的介绍及使用

增删查

【C++进阶】set的介绍及使用

【C++进阶】set的介绍及使用

【C++进阶】set的介绍及使用
这里可以看到set是不允许插入多个同样的值


【C++进阶】set的介绍及使用
【C++进阶】set的介绍及使用
【C++进阶】set的介绍及使用
【C++进阶】set的介绍及使用


【C++进阶】set的介绍及使用
【C++进阶】set的介绍及使用
【C++进阶】set的介绍及使用


迭代器的使用

【C++进阶】set的介绍及使用
其中begin、end、rebegin、rend为正常迭代器,其余为const修饰的迭代器。
【C++进阶】set的介绍及使用
【C++进阶】set的介绍及使用