当前位置:  软件>C/C++软件

C Minimal Perfect Hashing Library

    来源:    发布时间:2014-12-29

    本文导语:  C Minimal Perfect Hashing Library (CMPH) 是一个可移植的基于 LGPL 协议发布的 C 语言的哈希函数库。该库封装了最新而且最高效的算法,易用,稳定、快速。 示例代码: #include #include // Create minimal perfect hash function from in-memory vector...

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

示例代码:

  #include 
  #include 
  // 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:%un", key, id);
          i++;
      }
  
      //Destroy hash
      cmph_destroy(hash);
      cmph_io_vector_adapter_destroy(source);   
      fclose(mphf_fd);
      return 0;
  }

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 安装一个Minimal Linux System时碰到的问题,请高手指点。
  • andlinux-beta1-minimal中怎么安装GCC呀


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3