问题标签 [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 投票
3 回答
1689 浏览

c++ - 使用 unordered_map 其中 Key 是 T 的成员

有什么好方法可以使用 unordered_map 以便您可以在恒定时间内通过成员变量访问对象(平均情况)?以下示例具有此功能,但需要将每个名称Person复制为 Key:

我在想,在散列和访问对象时,它value_type需要以某种方式成为Person它自己,而不是 apair<string, Person>并且unordered_map需要知道使用它。Person::getName

理想的解决方案将允许我设置一个unordered_map(或者unordered_set如果它更适合这项工作),它知道用来Person::getName获取每个对象的密钥。然后我可以通过提供对象(并且没有密钥,因为它知道如何获取密钥)来插入它们,并通过提供与返回值相等的密钥来访问它们Person::getName

类似于以下内容:

那么是否可以实例化一个unordered_map可以巧妙地做到这一点的模板类呢?

0 投票
4 回答
33805 浏览

c++ - unordered_map / unordered_set 中元组的通用哈希

为什么不std::unordered_map<tuple<int, int>, string>开箱即用?必须为 定义一个散列函数是很乏味的tuple<int, int>,例如

构建一个以元组为键的无序映射(Matthieu M.) 展示了如何为boost::tuple. 有没有在不使用可变参数模板的情况下为 c++0x 元组执行此操作?

当然这应该是标准:(

0 投票
3 回答
25414 浏览

c++ - unordered_map 哈希函数 C++

我需要像这样定义一个 unordered_map unordered_map<pair<int, int>, *Foo>,定义和传递 a hashandequal函数到这个映射的语法是什么?

我尝试将这个对象传递给它:

没有运气:

我不知道是什么size_type_Buskets手段,所以我给了它1。正确的方法是什么?谢谢。

0 投票
3 回答
2018 浏览

visual-studio-2010 - 如何使用 vs2010 在调试模式下查看 boost:unordered_map 中的值

我有以下代码...

如您所见,映射的值是一个指针。如何获取地图中的值。如果我使用(*(ret[int]))[int],我似乎无法获得价值。我究竟做错了什么?

0 投票
2 回答
473 浏览

java - 无序(或哈希)映射中的迭代器

据我了解,Hashmap 比标准映射更可取,因为您可以在接近 O(1) 的时间内找到元素。这是通过使用散列或键作为数组查找来完成的。然后我们解决任何冲突并提取值。

这对查找很有用,但是如果我们在其中进行哈希查找的数组空间是稀疏填充的,那么 hashmap/unorderedmap 如何有效地迭代我们的 hashmap 中的所有元素,而无需详尽地遍历我们的数组空间?

编辑:但 Boost、SGI 和 C++11 哈希映射/无序映射有迭代器,那么它们是如何工作的?

0 投票
1 回答
575 浏览

nested - 嵌套 boost::unordered_map 不更新值?

编码:

为什么输出是 1 而不是 2?而当我使用 boost::unordered_map* > 时,一切正常。谁能帮我?

0 投票
1 回答
1275 浏览

c++ - 包含 unordered_map 作为成员的结构的 sizeof()

我有以下类型的结构

假设 sizeof(node) 在 C++ 中为您提供了该节点的正确大小是否安全?我确信结构中会有填充,但 sizeof 仍然会考虑 unordered_map 的正确大小。

0 投票
2 回答
1264 浏览

c++ - unordered_map::find() 插入查找的键

unordered_map::find() 的一个特性是自动插入我们用 0 值查找的键吗?让我说清楚

所以如果我再次查找 1,它会在 tempMap 中有 0 作为对应值吗?这是 unordered_map 的一个特性吗?

0 投票
2 回答
2922 浏览

c++ - boost::unordered_map -- 需要为散列 std::set 指定一个自定义散列函数?

我想使用boost::unordered_map<key,value>keya在哪里std::set<int>。由于一组整数不是内置类型,我假设我必须提供我自己的哈希函数(或者,更确切地说,我正在考虑使用boost 的 hash_range)。

但是,现在我尝试像这样初始化哈希映射,既不提供哈希函数也不提供相等谓词——gcc 没有抱怨。这里发生了什么?boost 是否足够聪明,可以自己散列 STL 容器?这会比我使用自定义哈希函数慢吗?怎么用boost::hash_range

提前致谢。

0 投票
3 回答
2110 浏览

c++ - 有效擦除 tr1::unordered_map 中的元素

我正在试验 tr1::unordered_map 并偶然发现了如何有效删除元素的问题。'erase' 方法提供通过键或迭代器删除。我认为后者效率更高,因为前者可能涉及隐式查找操作。另一方面,我在互联网上的调查显示,在调用 insert() 方法后,迭代器可能会变得无效。

我对典型的现实世界情况感兴趣,其中放入哈希表的对象具有足够长的生命周期,以便在该生命周期内调用 insert()。因此,我可以得出结论,在这种情况下,按键删除是唯一的选择吗?有没有其他方法可以更有效地删除对象?我完全意识到这个问题只在应用程序中很重要,因为删除经常发生。这是否会是我当前项目的情况,还有待观察,但我宁愿在设计我的项目时了解这些问题,而不是在已经存在大量代码时。