`

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的详解

    在C++ STL中,`hash_map`正是用来实现这种高效键值对存储的数据结构。 #### 1. 数据结构:hash_map原理 `hash_map`的基础是哈希表。哈希表的主要优势在于,它能够极大地减少数据存储和查找所需的时间,接近于常数...

    hash_map的简单应用

    hash_map

    Hash map 哈希表

    哈希表,也被称为Hash Map,是计算机科学中一种高效的数据结构,用于存储键值对。它通过一种称为哈希函数的过程将键映射到数组的特定位置,从而实现快速的查找、插入和删除操作。在哈希表中,查找时间通常接近常数...

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

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

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

    C++中的`hash_map`虽然未被正式纳入标准模板库(STL),但在很多STL实现中都有提供。`hash_map`的优势在于其近乎常数时间的平均复杂度,这得益于它对内存的高效利用,即使在大量数据面前,也能保持高效性能。 `map`是...

    哈希映射 hash map

    在C++中,虽然`hash_map`不是一个标准库容器,但它在许多STL实现中都有提供,如SGI的STL。`hash_map`与标准库中的`map`容器相似,都是用来管理键值对,但`hash_map`通常比`map`更快,因为`map`基于红黑树,查找和...

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

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

    cpp-sparsemap一个高效hashmap和hashset的C实现

    本文将深入探讨一种名为cpp-sparsemap的实现,它是一个高效且轻量级的哈希映射(HashMap)和哈希集合(HashSet)的C++实现,主要由Tessil团队开发,并存储于Tessil-sparse-map-162cc7b版本的代码库中。 cpp-...

    C++ + Hash + 对拍

    在C++中,`std::unordered_map` 和 `std::unordered_set` 是内置的哈希表实现,它们提供了高效的关键字查找和操作功能。 对拍是算法验证和调试的一种方法,尤其在解决在线判题系统(如LeetCode、Codeforces等)上的...

    Hash_map 实现源码

    在C++中,STL(Standard Template Library)提供了一个名为`std::unordered_map`的容器,它是基于哈希表实现的。然而,如果你想要深入理解哈希映射的工作原理,或者需要自定义哈希函数和冲突解决策略,那么编写自己...

    linux hash_map

    1. **包含头文件**:在C++标准库中,`hash_map`并不直接包含在`&lt;map&gt;`中,而是位于`&lt;ext/hash_map&gt;`。因此,使用`hash_map`时需要包含这个头文件,并使用`__gnu_cxx::hash_map`来引用它。 2. **模板参数**:`hash_...

    C/C++ 一致性hash算法

    需要注意的是,由于C/C++没有内置的哈希表,通常需要依赖如Google的sparse_hash_map或其他第三方库来实现。 在编码时,需要考虑以下关键点: - 设计合适的哈希函数,确保哈希值分布均匀。 - 实现环形结构,通常...

    哈希表 哈希 (C++编写)

    在C++编程中,虽然标准库没有直接提供哈希表,但可以利用STL中的`std::unordered_map`或`std::unordered_set`来实现。 哈希函数是哈希表的核心,它的任务是将任意大小的键转换为固定大小的哈希值。理想的哈希函数...

    hashString

    标题中的"hashString"指的是一个C++实现的哈希类,专门处理字符串类型的输入。下面我们将深入探讨哈希函数的基础概念,以及如何在C++中实现哈希表和加密表。 1. 哈希函数基础: 哈希函数的主要目的是将输入(通常是...

    TBB并发容器 学习笔记

    3. `concurrent_hash_map`:这是一个线程安全的哈希映射,允许并发的读写操作。它在多线程环境下提供高效的数据查找和更新,同时确保数据一致性。 相比于传统的STL容器,TBB并发容器的优势在于它们在设计时考虑了多...

    哈希表应用C++_STL_hash

    在C++中,标准模板库(STL)提供了一个名为`std::unordered_set`和`std::unordered_map`的容器,它们是哈希表的实现,能够帮助程序员高效地处理这些操作。 1. **哈希表基础** - **哈希函数**:哈希表的核心在于...

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

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

    C++实现的hash冲突解决算法

    在C++中实现这些哈希冲突解决算法,可以使用STL中的`std::unordered_map`或`std::unordered_set`,它们内部已经实现了哈希表,包括冲突解决策略。如果你需要自定义哈希函数或解决冲突的方法,可以继承`std::hash`并...

    c++用vector实现HashSet

    在C++编程中,HashSet是一种常用的集合数据结构,它提供了存储唯一对象的功能,类似于Java中的HashSet。虽然C++标准库中没有直接提供HashSet类,但我们可以利用其他容器,如`std::unordered_set`来实现类似的功能。...

Global site tag (gtag.js) - Google Analytics