`

C++中的hash Map

阅读更多
标准std中只有map,是使用平衡二叉树实现的,查找和添加的复杂度都为O(log(n)),
没有提供hash map,gnu c++提供了hash_map,是一个hash map的实现,查找和添加复杂
度均为O(1)。
#include <ext/hash_map>
#include <iostream>
#include <cstring>

using namespace std; 
using namespace __gnu_cxx;

struct eqstr{
	bool operator()(const char *s1, const char *s2)const{
		return strcmp(s1,s2) == 0;
	}
};

int main(){
	hash_map<const char *,int,hash<const char *>,eqstr> months;
	months["january"] = 31;
	months["february"] = 28;
	months["march"] = 31;
	cout << "march -> " << months["march"] << endl;
}

不过gnu hash_map和c++ stl的api不兼容,c++ tr1(C++ Technical Report
1)作为标准的扩展,实现了hash map,提供了和stl兼容一致的api,称为unorder_map.在头文件
<tr1/unordered_map>中。另外c++ tr1还提供了正则表达式、智能指针、hash table、
随机数生成器的功能。
#include <iostream>
#include <string>
#include <tr1/unordered_map>
using namespace std;

int main(){
	typedef std::tr1::unordered_map<int,string> hash_map;
	hash_map hm;
	hm.insert(std::pair<int,std::string>(0,"Hello"));
	hm[1] = "World";
	for(hash_map::const_iterator it = hm.begin(); it != hm.end(); ++it){
		cout << it->first << "-> " << it->second << endl;
	}
	return 0;
}
0
0
分享到:
评论

相关推荐

    c++中hash_table以及std::map应用案例

    代码重点是hash_table,附加std::map与其做对比,实现的是一条sql语句:select c_nationkey, c_mktsegment, count(*), max(c_acctbal) from aaa_customer_1g group by c_nationkey, c_mktsegment order by c_...

    hash_map的简单应用

    hash_map

    hash_map的详解

    关于hash_map的用法与解释: #include &lt;hash_map&gt; #include #include using namespace std; //define the class class ClassA{ public: ClassA(int a):c_a(a){} int getvalue()const { return c_a;} void ...

    利用Java的HashMap 改造C++ 的hash_map

    结合Java的HashMap中的一些优点,改进了C++ 的hash_map。 详细说明见我的博客:http://blog.csdn.net/mdj67887500/article/details/6907702

    Hash map 哈希表

    网上下载的一个哈希表.再次分享一下

    C++中的哈希容器unordered_map使用示例

    随着C++0x标准的确立,C++的标准库中也终于有了hash table这个东西。 很久以来,STL中都只提供&lt;map&gt;作为存放对应关系的容器,内部通常用红黑树实现,据说原因是二叉平衡树(如红黑树)的各种操作,插入、删除、查找...

    C++哈希表使用的好文章-Hash_Map

    hash_map基于hash table(哈希表)。 哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间...

    哈希映射 hash map

    哈希映射 hash map hash_map基于hash table(哈希表)。哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况...

    hash_map:C++ STL 哈希映射容器

    STL hash_map: 链式散列 版权所有 (c) 2014,龙 (Ryan) 南宫。 保留所有权利。 邮箱: 创建时间:2014 年 7 月 15 日 这是无序的哈希映射,它具有恒定的插入、删除、搜索时间,并支持向前/向后迭代。 hash_map 的...

    c++参考手册 2018版

    map − unordered_map (C++11) priority_queue − span (C++20) 其他容器: 顺序 − 关联 无序关联 − 适配器 迭代器库 范围库 (C++20) 算法库 数值库 常用数学函数 特殊数学函数 (C++17) 数值算法 伪随机...

    Hashtable和HashMap的区别:

    1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类; 2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable...

    一个内存高效哈希映射和哈希集的c++实现- Tessil/sparse-map

    一个内存高效哈希映射和哈希集的c++实现- Tessil/sparse-map-源码

    dense_hash_map:STD的简单替代

    jg :: dense_hash_map 一个简单的std::unordered_map替代品,具有更好的性能,但失去了稳定的寻址方式,这是一种折衷方案。 在此处查看此哈希图的详细说明: : 生成状态: 特拉维斯(Travis):

    c++容器list、vector、map、set区别与用法详解

    c++容器list、vector、map、set区别 list 封装链表,以链表形式实现,不支持[]运算符。 对随机访问的速度很慢(需要遍历整个链表),插入数据很快(不需要拷贝和移动数据,只需改变指针的指向)。 新添加的元素,...

    常用C++库及测试程序

    C++最常用函数库及部分封装库:包括vector,hash_set, hash_map, 文件读写,时间,字符串处理,压缩,正则表达式,redis,文件系统,日志,参数解析,base64,json处理等等,简单易用

    C++ STL 开发技术导引(随书源码)

    通过本书的学习,读者不仅可以轻松掌握C++ STL,还可以从它的一流源代码中受益匪浅。本书可用作高等院校计算机及相关专业的教学参考书。也适合各层次的C++开发人员和爱好者为锤炼自身的C++基本功阅读使用。 【目录...

    C++ Perimer Effective

    C++ Perimer 双语版.chm EffectiveC++.chm 中文版 EffectiveSTL.chm 第3版 中文版 Effective C++ & More Effective C++ 英文版.chm STL hash_map 用STL快速编写ini配置文件识别类

    C++ generic open address hash map:简单oaht模板类-开源

    它主要是符合“ C ++ unordered_map”的标准,如果下载它,则会发现Visual Studio项目或CMakeLists.txt,其中集成了来自GCC的针对unordered_map的测试套件。 该地图通过的位置。 某个基准:== 1百万次int推送== *...

    c++实现一个快速哈希映射和哈希集使用robin hood哈希- Tessil/robin-map

    c++实现一个快速哈希映射和哈希集使用robin hood哈希- Tessil/robin-map-源码

Global site tag (gtag.js) - Google Analytics