三月廿七 发表于 2012-06-27 14:51 据说STL的 map 是用 rbtree实现的, map是一个哈希表, 也就是说, 可以用 rbtree 实现 哈希表,
starwing83 发表于 2012-06-27 20:36 内存是不值钱,但是分配动态内存是个很慢的活儿,或者可能让后面的内存分配变得很慢= =
starwing83 发表于 2012-06-28 16:32 回复 15# yulihua49
egmkang 发表于 2012-07-01 16:53 数量小的话,用谁都一样,搞不好数组都可以. 数据量大的话,hash会快很多,如果你的hash函数足够好的话:mr ...
wwwsq 发表于 2012-07-02 10:12 哈希函数都差别不大,包括最近很火的murmur-hash,也只有特定场景才会略快一些。 如果是做比较通用的 ...
yulihua49 发表于 2012-07-02 12:07 人家说是跟树比。 如果不同的hash方法,除了算法本身的速度,hash冲突的影响更大。
wwwsq 发表于 2012-07-02 13:30 “数据量大的话,hash会快很多”,这句话也是不准确的。无论数据多少,hash表都比rbtree快。 你看看 ...
yulihua49 发表于 2012-07-02 14:28 数据量大的话,hash会快很多--不是我说的。不过也是可以理解的。hash接近常数,而rbtree在数据量大的时候时 ...
starwing83 发表于 2012-06-28 16:32 回复 15# yulihua49 我是比较担心在数量级较小的情况下,红黑反而会快。就比如插入排序在排序元素少于16个的情况下比快排快一样。
hbmhalley 发表于 2012-07-02 15:19 对啊,解决哈希冲突的过程不就像小数量级的插入排序么,rbtree才是类似快排. 比反了.
yulihua49 发表于 2012-07-02 15:32 前边已经说了,你不必担心,一般情况就hash吧,不会有错。 除非。。。。。。。。。
inet_addr 发表于 2012-07-02 17:29 单词有500个的话, 用多叉树可能最快 struct Mtree {
wwwsq 发表于 2012-07-02 17:33 hash表最大的缺陷是当数据的量难以估计的时候,没法设置合适的bucket值。 元素可能是10个,也可能是 ...