rb_tree&Hash_table
1、rb_tree
(1)平衡二分搜索树(balanced binary search tree)
(2)通过key进行排序,允许data改变,不改变key
(3)key是否能重复取决于需求,insert_unique()和insert_equal()
2、hash_table
实现原理:加入有一个篮子,存储空间长度为53
存入的值为[59,63,108,2,53,55]
如何存入bucket中呢?val%53 = key
例如:val = 59;它对应的key = 59%53 = 6;所以59存在索引为6的篮子中。
注意:因为0%53 和53&53都对应为0号篮子中,就不是意义对应关系了,那么需要将扩充篮子的长度
为106,此时0对应的key为0,53对应的key为53,那样就不会有重复了。
所以在查找方面,hash_table效率为O(1),但是浪费存储空间,典型用空间换时间。
而红黑树查找为O(logn);
按这样hash表的插入和删除的效率都很高;
总结:hashtable在插入的时候,利用值取余找键(也就是索引)进行插入,在查找的时候就是根据键(索引)去找值。
map则是根据pair(key,value)这个结构体中的key进行查找到位置,然后进行插入。