一、set

  • set语法使用参阅:

set的特性

  • set所有元素都会根据元素的键值自动被排序

  • set中的键值就是实值,实值就是键值

  • 默认情况下set不允许两个元素重复

set的迭代器

  • 不能根据set的迭代器改变set元素的值。因为其键值就是实值,实值就是键值,如果改变set元素值,会严重破坏set组织

  • 在后面的源码中会看到,set的迭代器set<T>::iterator被定义为底层RB-tree的const_iterator。因此set的迭代器是一种constant iterators

set拥有与list的相同的某些性质

  • 当客户端对它进行元素新增(insert)操作或删除(erase)操作时,操作之前的所有迭代器在操作完成之后依然有效(当然,被删除的那个元素的迭代器无效)

相关算法

  • STL提供了一组set/multiset相关算法,包括交集(set_interp)、联集(set_union)、差集(set_difference)、对称差集(set_symmetric_difference)

  • 详情会在后面

C++(STL):27 ---关联式容器set源码剖析相关推荐

  1. C++(STL):31 ---关联式容器map源码剖析

    map的特性 所有元素都会根据元素的键值自动被排序 map中的pair结构 map的所有元素类型都是pair,同时拥有实值(value)和键值(key) pair的第一个元素视为键值,第二个元素视为实 ...

  2. C++(STL):25 ---序列式容器stack源码剖析

    一.stack概述 stack是一种先进后出(First In Last Out,FILO)的数据结构.它只有一个出口, 形式如下图所示 特点: stack允许新增元素.移除元素.取得最顶端元素.但除 ...

  3. C++(STL):23 ---序列式容器queue源码剖析

    一.queue概述 queue是一种先进先出(First In First Out,FIFO)的数据结构.它有两个出口,形式如下图所示 特点: queue允许新增元素.移除元素.从最底端加入元素.取得 ...

  4. C++(STL):29 ---关联式容器map 迭代器

    无论是前面学习的序列式容器,还是关联式容器,要想实现遍历操作,就必须要用到该类型容器的迭代器.当然,map 容器也不例外. C++ STL 标准库为 map 容器配备的是双向迭代器(bidirecti ...

  5. C++(STL):28 ---关联式容器map用法

    作为关联式容器的一种,map 容器存储的都是 pair 对象,也就是用 pair 类模板创建的键值对.其中,各个键值对的键和值可以是任意数据类型,包括 C++ 基本数据类型(int.double 等) ...

  6. C++(STL):30 ---关联式容器map的operator[]和insert效率对比

    通过前面的学习我们知道,map 容器模板类中提供有 operator[ ] 和 insert() 这 2 个成员方法,而值得一提的是,这 2 个方法具有相同的功能,它们既可以实现向 map 容器中添加 ...

  7. C++(STL):26 ---关联式容器set用法

    set容器都会自行根据键的大小对存储的键值对进行排序, 只不过 set 容器中各键值对的键 key 和值 value 是相等的,根据 key 排序,也就等价为根据 value 排序. 另外,使用 se ...

  8. 雷丰阳雷神对spring容器的源码剖析

    Spring容器的refresh()[创建刷新]; 1.prepareRefresh()刷新前的预处理;1).initPropertySources()初始化一些属性设置;子类自定义个性化的属性设置方 ...

  9. STL源码剖析 关联式容器

    STL关联式容器以set(集合) 和 map(映射表)两大类,以及对应的衍生体构成,比如mulyiset(多键集合) multimap(多键映射表) ,容器的底层均基于红黑树 RB-Tree也是一个独 ...

最新文章

  1. SSH,SCP,SFTP命令汇总
  2. 【Python】学习笔记五:缩进与选择
  3. 涡流探伤仪计算机软件,册亨通过式涡流探伤仪涡流探伤仪保养
  4. 7、Docker容器数据卷volumes-from
  5. css 背景图怎么设置自动填充满_CSS-布局与定位
  6. DeepEarth更新到Silverlight 4了
  7. python中swap的意思_Python为什么不需要swap(a,b)
  8. Hadoop学习笔记—20.网站日志分析项目案例(三)统计分析
  9. 铁血规则:事件预订与取消预订
  10. 对话阿里云总裁张建锋:解密阿里云再生长的动力、合力和张力
  11. 搜狗高速浏览器打开网页没有声音怎么办
  12. matlab画gds图,如何将图片转换为.gds文件?(转)
  13. AngularJS scope 学习
  14. 解决导出CSV后在EXCEL打开纯数字前面0丢失问题
  15. 树线段hdu 4508 美素数(线段树)
  16. ios怎么引入masonry_iOS Masonry的使用需要注意的地方
  17. xgboost算法_xgboost算法学习心得
  18. windows 远程桌面mstsc的问题
  19. python ctp接口_Python-CTP PyCTP 接口
  20. 区块链架构1.0、2.0与3.0梳理

热门文章

  1. wince下获取mac地址的简单方法!
  2. java 匿名内部类 百科_java匿名内部类具体概念是什么,在什么地方用到?
  3. python socket发包_一个python发包的脚本
  4. sklearn的逻辑回归
  5. 【转】ABP源码分析三十五:ABP中动态WebAPI原理解析
  6. 【转】EntityFramework使用Code First模式创建数据库控制生成单数形式的表名
  7. EasyUI学习总结(一)——EasyUI入门
  8. C#的变迁史06 - C# 4.0 之并行处理篇
  9. 认识ASP.NET 5项目结构和项目文件xproj
  10. 动态网站的技术路线_3个好玩实用小网站!闲暇时间不妨打开看看