Hash表这种数据结构 1)访问速度快 2)大小不受限制 3)按键进行索引,没有重复对象

C++中Map效率很高的,为log(n)级别。 比方来说100万条记录,最多也只要20次的比较,就能找到你要找的记录;200万条记录事,也只要用21次的比较。

使用起来也非常简单,如下先typedef个声明函数的东西(这里使用了Map),然后就可以声明函数了

typedef std::map<<typename CSFs>, double> Hash_Map_Sampling;
Hash_Map_Sampling sampling_hash;

具体使用的时候,可以直接表用Map里面的内置函数,如.find(CSF),.begin(),.end()等等,赋值的时候可以当数组来用,很方便。

如sampling_hash[CSF]=Value;


如果需要更快的话,这时有两个选择: 一是Hash_Map, 二是专用的Hash_Map(如Intel的concurrent_hash_map - Threading Building Blocks(TBB))

第一种Hash_Map的话,只需要将std::map改为std::hash_map,所有的其他用法完全没有区别。

  • hash_map 查找速度会比map快,而且查找速度基本和数据量大小无关,属于常数级别;
  • 而map的查找速度是log(n)级别。但是一定要注意hash_map对空间的要求要比map高很多,所以是以空间换时间的方法。

第二种TBB中的Hash_Map,具体的话可以参见(详细说明) http://www.threadingbuildingblocks.org/docs/help/reference/containers_overview/concurrent_hash_map_cls.htm 然后注意 #include “tbb/concurrent_hash_map.h” 即可

  • map_cpp.txt
  • Last modified: 2019/09/24 00:23
  • (external edit)