STL中map的底层结构
STL中map和set的标准底层结构是红黑树。为什么不用哈希表呢? STL
[解决办法]
RBT比Hash适用范围更广,因为:
1:RBT可以查找范围(比如3与5之间的数据),而Hash只能进行等值查找
2:RBT的最差查找时间是O(LogN),而Hash的最差查找时间是O(N)
3:RBT的平均查找时间受数据变化的影响很小,而Hash的平均查找时间受数据变化的影响很大。
4:使用Hash需要使用大量的数据进行测试,以调整hash函数,减少冲突。
如果你不想在设计hash函数上花费精力的话,使用hash还不如使用map。其实Hash更适用于在相对固定的数据集中进行查找,这时可以精心设计一个冲突足够小的hash函数。