STL中的set是用什么实现的?为什么不用hash?
来源:互联网 发布:怎样增加淘宝店铺流量 编辑:程序博客网 时间:2024/05/22 11:52
STL的set用什么实现的?为什么不用hash?
----------------------------------------------------------
下面算是比较好的回答,当强调hash表的缺点时,一定要说明内存分配的问题,会浪费一部分内存。而且hash表会为每种类型构造hash函数,不一定快。
一个在PHP中使用较多的字符串hash函数:
static unsigned long hashpjw(char *arKey, unsigned int nKeyLength){ unsigned long h = 0, g; char *arEnd=arKey+nKeyLength; while (arKey < arEnd) { h = (h << 4) + *arKey++; if ((g = (h & 0xF0000000))) { h = h ^ (g >> 24); h = h ^ g; } } return h;}
是用红黑树实现的,红黑树是一种平衡性很好的二分查找树。要使用hash的话,就需要为不同的存储类型编写哈希函数,这样就照顾不到容器的模板性了,而是用红黑树只需要为不同类型重载operator<就可以了。
0 0
- STL中的set是用什么实现的?为什么不用hash?
- STL中set底层实现方式? 为什么不用hash?
- 为什么Hibernate的OneToMany用Set集合而不用list
- 241 map 在什么情况下会发生死锁;stl 中的 map 是怎么实现的?
- stl之hash set
- STL中的set的用法
- hibernate多对多关系为什么用Set不用ArrayList
- 计算机为什么用二进制存储数据?即为什么是0101010,为什么不用其他进制?既然计算机是二进制,为什么又衍生出来一八进制、十六进制干什么,八进制和十六进制在计算机中有什么用呢?
- Java 中的 TreeMap 是采用什么树实现的?
- 为什么用*? 为什么不用*?
- 为什么Hadoop是用Java实现的?
- STL中的set容器的一点总结
- STL中的set容器的一点总结
- STL中的set容器的一点总结
- STL中的set容器的一点总结
- STL中的set容器的一点总结
- STL中的set容器的一点总结
- STL中的set容器的一点总结
- HLS中m3u8格式规范解读
- java 根据开始和结束日期得到之间所有日期集合
- 字符串和字符数组互转
- <meta name="format-detection"/> 的用处
- 创建彩色内存位图
- STL中的set是用什么实现的?为什么不用hash?
- 记忆按钮
- XML和HTML的比较
- 屏幕截图,view,ScrollView截图
- Apple Push Notification Service(APNS)开发指引
- 程序员的回归式进化
- 转换时间——CONVERT (VARCHAR,getdate(),23)
- Spring中Quartz的配置
- Xcode把应用程序打包成ipa