本文整理汇总了C++中map_t::hashf方法的典型用法代码示例。如果您正苦于以下问题:C++ map_t::hashf方法的具体用法?C++ map_t::hashf怎么用?C++ map_t::hashf使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类map_t
的用法示例。
在下文中一共展示了map_t::hashf方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: map_unset
int map_unset(map_t map, void *key, void **olddata)
{
bucket_t *b, *prev;
int hash;
if (!map || !key)
return RETERROR(EINVAL, -1);
hash = map->hashf(map->size, key);
b = map->buckets[hash];
prev = 0;
while (b)
{
if (!map->compf(key, b->key))
{
if (prev)
prev->next = b->next;
else
map->buckets[hash] = b->next;
mem_init(olddata, b->data);
map_bucket_free(map, b);
return -- map->count;;
}
prev = b;
b = b->next;
}
return RETERROR(ERANGE, -1);
}
示例2: map_set
int map_set(map_t map, void *key, void *data, void **olddata)
{
bucket_t *b;
if (!map || !key)
return RETERROR(EINVAL, -1);
b = map_bucket_find(map, key);
if (b)
{
mem_init(olddata, b->data);
b->data = data;
}
else
{
int hash;
if (!map_resize(map, map->count + 1, 0))
return -1;
if (!(b = map_bucket_alloc(map, key, data)))
return -1;
hash = map->hashf(map->size, key);
b->next = map->buckets[hash];
map->buckets[hash] = b;
++ map->count;
}
return map->count;
}