当前位置: 首页 > 软件库 > 程序开发 > 常用工具包 >

C Minimal Perfect Hashing Library

授权协议 LGPL
开发语言 C/C++
所属分类 程序开发、 常用工具包
软件类型 开源软件
地区 不详
投 递 者 谷梁波
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

C Minimal Perfect Hashing Library (CMPH) 是一个可移植的基于 LGPL 协议发布的 C 语言的哈希函数库。该库封装了最新而且最高效的算法,易用,稳定、快速。

示例代码:

#include <cmph.h>
  #include <string.h>
  // Create minimal perfect hash function from in-memory vector
  int main(int argc, char **argv)
  { 
  
      // Creating a filled vector
      unsigned int i = 0;
      const char *vector[] = {"aaaaaaaaaa", "bbbbbbbbbb", "cccccccccc", "dddddddddd", "eeeeeeeeee", 
          "ffffffffff", "gggggggggg", "hhhhhhhhhh", "iiiiiiiiii", "jjjjjjjjjj"};
      unsigned int nkeys = 10;
      FILE* mphf_fd = fopen("temp.mph", "w");
      // Source of keys
      cmph_io_adapter_t *source = cmph_io_vector_adapter((char **)vector, nkeys);
  
      //Create minimal perfect hash function using the brz algorithm.
      cmph_config_t *config = cmph_config_new(source);
      cmph_config_set_algo(config, CMPH_BRZ);
      cmph_config_set_mphf_fd(config, mphf_fd);
      cmph_t *hash = cmph_new(config);
      cmph_config_destroy(config);
      cmph_dump(hash, mphf_fd); 
      cmph_destroy(hash);	
      fclose(mphf_fd);
  
      //Find key
      mphf_fd = fopen("temp.mph", "r");
      hash = cmph_load(mphf_fd);
      while (i < nkeys) {
          const char *key = vector[i];
          unsigned int id = cmph_search(hash, key, (cmph_uint32)strlen(key));
          fprintf(stderr, "key:%s -- hash:%u\n", key, id);
          i++;
      }
  
      //Destroy hash
      cmph_destroy(hash);
      cmph_io_vector_adapter_destroy(source);   
      fclose(mphf_fd);
      return 0;
  }
  • 散列算法c语言 I try to find some Hashing libraries for C and find several good ones. 我尝试找到一些用于C的哈希库,并找到几个好的库。 The hsearch function in the GNU C library. GNU C库中的hsearch函数 。 There are other methods to organi

相关阅读

相关文章

相关问答

相关文档