Set的底层实现方式
来源:互联网 发布:ppt图表数据不能修改 编辑:程序博客网 时间:2024/06/14 08:03
Q:STL中set底层实现方式? 为什么不用hash?
A: 第一个问题:set底层实现方式为RB树(即红黑树)。
第二个问题:
首先set,不像map那样是key-value对,它的key与value是相同的。关于set有两种说法,第一个是STL中的set,用的是红黑树;第二个是hash_set,底层用得是hash table。红黑树与hash table最大的不同是,红黑树是有序结构,而hash table不是。但不是说set就不能用hash,如果只是判断set中的元素是否存在,那么hash显然更合适,因为set 的访问操作时间复杂度是log(N)的,而使用hash底层实现的hash_set是近似O(1)的。然而,set应该更加被强调理解为“集合”,而集合所涉及的操作并、交、差等,即STL提供的如交集set_intersection()、并集set_union()、差集set_difference()和对称差集set_symmetric_difference(),都需要进行大量的比较工作,那么使用底层是有序结构的红黑树就十分恰当了,这也是其相对hash结构的优势所在。
0 0
- Set的底层实现方式
- set底层实现方式?
- set的底层实现
- C++ STL中set底层实现方式
- STL中set底层实现方式? 为什么不用hash?
- session会话的底层实现方式
- 链表的底层实现方式
- 刚发现set的底层是通过map实现的
- STL中map、set的数据结构及底层实现
- STL中map、set的数据结构及底层实现
- STL中map、set的数据结构及底层实现
- STL中map、set的数据结构及底层实现
- STL中map、set的数据结构及底层实现
- C++中 vector、list、deque、set、map的底层实现
- STL中map、set的数据结构及底层实现
- STL中map、set的数据结构及底层实现
- STL中map、set的数据结构及底层实现
- STL中map、set的数据结构及底层实现
- 9.1.2 使用类型扩展追加成员
- oralce查看数据库表空间信息
- sql server转换时间函数 转成 xxx年xx月xx日格式
- android模拟器Genymotion 连接eclipse项目
- Linux创建、删除文件和文件夹命令
- Set的底层实现方式
- STC15F204 模拟串口例程 简单理解
- js 弹出框、弹出层
- hdoj 1002 A+B Problem II
- android - anim translate中 fromXDelta、toXDelta、fromYDelta、toXDelta属性
- Android 弹出可供选择的弹框
- 互联网思维下的行业“淘宝“理论
- GridView 使用
- onActivityResult