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” 即可