问题标签 [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.
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
可以巧妙地做到这一点的模板类呢?
c++ - unordered_map / unordered_set 中元组的通用哈希
为什么不std::unordered_map<tuple<int, int>, string>
开箱即用?必须为 定义一个散列函数是很乏味的tuple<int, int>
,例如
构建一个以元组为键的无序映射(Matthieu M.) 展示了如何为boost::tuple
. 有没有在不使用可变参数模板的情况下为 c++0x 元组执行此操作?
当然这应该是标准:(
c++ - unordered_map 哈希函数 C++
我需要像这样定义一个 unordered_map unordered_map<pair<int, int>, *Foo>
,定义和传递 a hash
andequal
函数到这个映射的语法是什么?
我尝试将这个对象传递给它:
没有运气:
我不知道是什么size_type_Buskets
手段,所以我给了它1
。正确的方法是什么?谢谢。
visual-studio-2010 - 如何使用 vs2010 在调试模式下查看 boost:unordered_map 中的值
我有以下代码...
如您所见,映射的值是一个指针。如何获取地图中的值。如果我使用(*(ret[int]))[int]
,我似乎无法获得价值。我究竟做错了什么?
java - 无序(或哈希)映射中的迭代器
据我了解,Hashmap 比标准映射更可取,因为您可以在接近 O(1) 的时间内找到元素。这是通过使用散列或键作为数组查找来完成的。然后我们解决任何冲突并提取值。
这对查找很有用,但是如果我们在其中进行哈希查找的数组空间是稀疏填充的,那么 hashmap/unorderedmap 如何有效地迭代我们的 hashmap 中的所有元素,而无需详尽地遍历我们的数组空间?
编辑:但 Boost、SGI 和 C++11 哈希映射/无序映射有迭代器,那么它们是如何工作的?
nested - 嵌套 boost::unordered_map 不更新值?
编码:
为什么输出是 1 而不是 2?而当我使用 boost::unordered_map* > 时,一切正常。谁能帮我?
c++ - 包含 unordered_map 作为成员的结构的 sizeof()
我有以下类型的结构
假设 sizeof(node) 在 C++ 中为您提供了该节点的正确大小是否安全?我确信结构中会有填充,但 sizeof 仍然会考虑 unordered_map 的正确大小。
c++ - unordered_map::find() 插入查找的键
unordered_map::find() 的一个特性是自动插入我们用 0 值查找的键吗?让我说清楚
所以如果我再次查找 1,它会在 tempMap 中有 0 作为对应值吗?这是 unordered_map 的一个特性吗?
c++ - boost::unordered_map -- 需要为散列 std::set 指定一个自定义散列函数?
我想使用boost::unordered_map<key,value>
,key
a在哪里std::set<int>
。由于一组整数不是内置类型,我假设我必须提供我自己的哈希函数(或者,更确切地说,我正在考虑使用boost 的 hash_range)。
但是,现在我尝试像这样初始化哈希映射,既不提供哈希函数也不提供相等谓词——gcc 没有抱怨。这里发生了什么?boost 是否足够聪明,可以自己散列 STL 容器?这会比我使用自定义哈希函数慢吗?怎么用boost::hash_range
?
提前致谢。
c++ - 有效擦除 tr1::unordered_map 中的元素
我正在试验 tr1::unordered_map 并偶然发现了如何有效删除元素的问题。'erase' 方法提供通过键或迭代器删除。我认为后者效率更高,因为前者可能涉及隐式查找操作。另一方面,我在互联网上的调查显示,在调用 insert() 方法后,迭代器可能会变得无效。
我对典型的现实世界情况感兴趣,其中放入哈希表的对象具有足够长的生命周期,以便在该生命周期内调用 insert()。因此,我可以得出结论,在这种情况下,按键删除是唯一的选择吗?有没有其他方法可以更有效地删除对象?我完全意识到这个问题只在应用程序中很重要,因为删除经常发生。这是否会是我当前项目的情况,还有待观察,但我宁愿在设计我的项目时了解这些问题,而不是在已经存在大量代码时。