问题标签 [unordered-map]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
15506 浏览

c++ - 我不明白 std::tr1::unordered_map

我需要一个关联容器,它可以让我通过字符串索引某个对象,但它也保持插入的顺序,所以我可以通过它的名称查找一个特定的对象,或者只是迭代它并以我插入的相同顺序检索对象他们。

我认为链表和哈希映射的这种混合应该可以完成这项工作,但在我尝试使用之前,我std::tr1::unordered_map认为它以我描述的方式工作,但事实并非如此。那么有人可以解释一下的含义和行为unordered_map吗?


@wesc:我确定 std::map 是由 STL 实现的,而我确定 std::hash_map 不在 STL 中(我认为旧版本的 Visual Studio 将它放在名为 stdext 的命名空间中)。

@cristopher:所以,如果我做对了,区别在于实现(以及性能),而不是它在外部的行为方式。

0 投票
2 回答
2886 浏览

c++ - 指定构造 boost::unordered_map 时的最小桶数

我正在尝试使用 boost::unordered_map 来缓存一些值。我尝试在构造函数中指定最小桶数:

但是当我在程序结束时显示有关我的 unordered_map 的信息时:

克++:

vc++:

如何指定最小桶数?

0 投票
5 回答
2901 浏览

c++ - 编译时如何检查 TR1?

我们正在编写一个将自身保存在 .hpp 文件中的日志库。我们希望包括<tr1/unordered_map>(如果编译器支持 TR1)或其他标准<map>。是否有标准方法在编译时检查 tr1 是否可用?

我在想,就像“ __cplusplus”定义符号的存在方式一样,也可以定义一个“ __cxx__tr1”或类似的东西。我在 TR1 的草稿中没有看到它,所以我认为它不存在,但我想先问一下以防万一。

作为说明,如果这些定义不存在,那么将它们包含在提案本身中并不是一个坏主意。

0 投票
4 回答
16098 浏览

c++ - 哈希函数为一对long long?

我需要将一对映射long long到 a double,但我不确定要使用什么哈希函数。每对可能由任意两个数字组成,尽管在实践中它们通常是介于0和之间的数字100(但同样,这并不能保证)。

tr1::unordered_map文档。我是这样开始的:

一般来说,我永远不确定要使用什么散列函数。什么是好的通用哈希函数?

0 投票
2 回答
362 浏览

c++ - 使用 Autoconf 处理弃用的包含

我一直ext::hash_map在 C++ 项目中使用,并注意到在 g++ 4.3 中它已被弃用,取而代之的是unordered_map. 我需要保持与不可用的旧系统的兼容性unordered_map。我突然想到,这正是我已经在使用的 autoconf 可以处理的事情。但是,我未能成功找到有关这样做的文档。

我想我需要执行以下操作:
- 将ext::hash_map我的代码中的所有实例替换为 - 将我的代码中的所有MY_HASH_MAP
实例替换为 - 在 configure.ac 中使用和的某种组合包含一行ext/hash_mapMY_HASH_INCLUDE
AC_CHECK_HEADERSAC_DEFINE

我无法准确地找出正确的 autoconf 魔法来完成这项工作,并且想知道它是否是最好的解决方案。当然,这是许多其他人会处理的事情,并且可能有一些我无法找到的标准解决方案?

所以,三个相关的问题:
- 有没有我应该使用的标准方法来处理这个问题?
- 我如何在 autoconf 中做到这一点?
- 我是否应该只使用 -Wno-deprecated 并假设 C++ 标准在我有生之年不会更新?

0 投票
1 回答
2330 浏览

c++ - 将 boost::pool_allocator 与 boost::unordered_map 一起使用的语法是什么?

我只是在试验 boost::pool 以查看它是否是我正在使用的东西的更快分配器,但我不知道如何将它与 boost::unordered_map 一起使用:

这是一个代码片段:

这是我得到的编译错误:

错误 3 错误 C2064:术语不计算为采用 2 个参数的函数 C:\Program Files (x86)\boost\boost_1_38\boost\unordered\detail\hash_table_impl.hpp 2048

如果我注释掉地图的使用,例如“theMap[1] = 2”,那么编译错误就会消失。

0 投票
2 回答
4029 浏览

c++ - Boost.Intrusive 和 unordered_map

我正在寻找使用侵入性 unordered_map。出于某种原因,库中只有一个 unordered_set。还有一个侵入式哈希表,但我不确定它是否具有相同的功能,也没有相同的接口。
我错了吗,我错过了 unordered_map 链接?
如果我没有,是否有一个教程可以帮助我实现一个?

0 投票
1 回答
41392 浏览

c++ - hash_map 和 unordered_map 的区别?

我最近发现 C++ 中哈希映射的实现将被称为unordered_map.

当我查找他们为什么不只是 usinghash_map时,我发现显然存在与解决方案的实现的兼容性问题hash_mapunordered_map更多关于它在这里)。

该 wiki 页面没有提供更多信息,所以我想知道是否有人知道hash_mapunordered_map解决的一些问题。

0 投票
2 回答
8542 浏览

c++ - 基本问题:指向 unordered_maps 中对象的指针 (C++)

我是 C++ 编程的新手,非常感谢那些不需要太多先验知识的回复。

感谢这里的建议,我创建了一个无序地图:

此映射中的数据是指向 Strain 类实例的指针。一旦创建了这些实例,我就创建指向它们的指针,然后将这些指针添加到我的哈希表 (hmap strainTable) 和另一个向量 (vector< Strain *> liveStrains),例如,

Strain 类的实例永远不会被删除,指向它们的指针也不会从 strainTable 中删除。指针偶尔会在 vector< Strain * > liveStrains 和 vector< Strain * > deadStrains 之间移动,但是一旦在 strainTable 上,它们就会停留在 strainTable 上。

这是犹太洁食吗?只要底层实例永远不会被破坏,添加到它们的指针会保持不变吗?

我应该总是能够通过使用例如第一个条目从 strainTable 中的指针获取成员属性是否也是正确的,

我发现过了一会儿,我的 strainTable 中的指针指向垃圾。

0 投票
2 回答
2736 浏览

c++ - unordered_map(C++)中的“错误:只读位置的分配”

我有一个带有int键和vector< vector< int >>数据的尴尬哈希表(特别是 unordered_map)。我需要定期更新这个二维整数向量中的元素。没有内在的原因我不应该这样做,对吧?我切换到的较新的 g++ 编译器抱怨在下面指定的行上分配了只读位置。

我是 C++ 新手,所以没有什么太明显的。感谢您的任何帮助。


按照蒂姆的建议

我已将上面代码的相关部分替换为以下内容:

此代码编译没有错误,并且似乎运行良好。像蒂姆一样,我仍然不太明白为什么修复有效。该错误以前出现在 gcc 版本 4.1.2 20080704 (Red Hat 4.1.2-44) 但不是 gcc 版本 4.0.1 (Apple Inc. build 5465)。当我没有紧迫的最后期限时,我会尝试更仔细地剖析错误!