zoukankan      html  css  js  c++  java
  • hash 内部实现

    http://www.cnblogs.com/waytofall/archive/2012/06/04/2534386.html

    散列表:是根据关键字(Key value)而直接访问在内存存储位置的数据结构。也就是说它通过把键值通过一个函数的计算,映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表

    hash_map中直接地址用hash函数生成解决冲突用比较函数解决

    hash 容器除了hash_map之外,还有hash_sethash_multimaphas_multiset, 这些容器使用起来和set, multimap, multiset的区别与hash_map和map的区别一样,

     hash_map 和 map的区别在哪里?

    • 构造函数。hash_map需要hash函数,等于函数;map只需要比较函数(小于函数).
    • 存储结构。hash_map采用hash表存储,map一般采用红黑树(RB Tree)实现。因此其memory数据结构是不一样的。

    什么时候需要用hash_map,什么时候需要用map?

    • 总体来说,hash_map 查找速度会比map快,而且查找速度基本和数据数据量大小,属于常数级别;而map的查找速度是log(n)级别。并不一定常数就比log(n)小,hash还有hash函数的耗时,明白了吧,如果你考虑效率,特别是在元素达到一定数量级时,考虑考虑hash_map。但若你内存使用特别严格,希望程序尽可能少消耗内存,那么一定要小心,hash_map可能会让你陷入尴尬,特别是当你的hash_map对象特别多时,你就更无法控制了,而且hash_map的构造速度较慢。

  • 相关阅读:
    关系数据库&&NoSQL数据库
    NoSQL
    大数据时代的数据存储,非关系型数据库MongoDB
    判断是否为BST
    百度2017暑期实习生编程题
    memset()实现及细节
    在必须返回一个对象时,不要去尝试返回一个引用
    返回局部变量指针
    用引用返回值
    数组形参
  • 原文地址:https://www.cnblogs.com/xaf-dfg/p/3696081.html
Copyright © 2011-2022 走看看