pintos find_bucket()实现

时间:2018-09-22 04:03:59

标签: pintos

 struct hash
    {
      size_t elem_cnt;            /* Number of elements in table. */
      size_t bucket_cnt;          /* Number of buckets, a power of 2. */
      struct list *buckets;       /* Array of `bucket_cnt' lists. */
      hash_hash_func *hash;       /* Hash function. */
      hash_less_func *less;       /* Comparison function. */
      void *aux;                  /* Auxiliary data for `hash' and `less'. */
    };


static struct list *
find_bucket (struct hash *h, struct hash_elem *e)
{
   size_t bucket_idx = h->hash (e, h->aux) & (h->bucket_cnt - 1);
   return &h->buckets[bucket_idx];
}

我一直在寻找pintos数据结构,但是我什么都没得到。

  1. 为什么散列中的bucket_cnt应该是2的幂?
  2. size_t bucket_idx = h->hash (e, h->aux) & (h->bucket_cnt - 1);的含义是什么
    我认为仅h-> hash(e,h-> aux)足以进行哈希处理,但是还有一个额外的内容,即'h-> bucket_cnt -1 '。这是什么意思,为什么需要?

0 个答案:

没有答案