问题标签 [boost-unordered]
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++ - 关于 boost bimap 中 unordered_multiset_of 的问题
我正在实现一个boost::bimap
并且我正在考虑使用unordered_multiset_of
但unordered_multiset_of
需要将一个哈希函数和相等运算符传递给它。而且我做错了。
似乎我的哈希函数和 equal_to 函数给出了错误。我如何解决它?我相信std::equal_to()
会自动调用我定义的 == 运算符MyClass
,对吧?
c++ - 如何在 boost::unordered_map 中实现 TryGetValue?
在C#
我喜欢TryGetValue
的方法中,Dictionary
因为它允许我在一次调用中确定字典是否包含键,如果是则接收值:
我应该如何做同样的事情boost::unordered_map
?
c++ - 双端队列无效下标。为什么我会收到此错误?
我在以下代码中收到执行错误。关于可能导致它的任何建议?
Error : Invalid deque <T> subscript
更多信息:
上述方法是静态方法。并且该程序是多线程的。由于多个线程访问它而发生此错误的任何机会。我有这样的假设,但后来认为上面的函数参数不可能一次相同。
c++ - boost::unordered_multimap:有效地获取桶中的所有元素?
我可以使用以下代码在一个存储桶中获取所有元素:
我想获取一个 local_iterator 到存储桶中的第一个元素并迭代它直到存储桶结束,所以如果哈希表中的给定索引只有一个值(其中索引是Hash(key)
),我将只迭代一个元素并接收桶 end(),如果有很多元素,我将迭代整个桶(所有值都具有相同的哈希值)。如果没有bucketIndex
,hashMMap_.begin( bucketIndex)
和, 这可能hashMMap_.end( bucketIndex)
吗?
所以基本上我想得到一个这样的local_iterator:
另一个问题是:在调用之前是否必须先测试是否find()
将迭代器返回到元素int bucketIndex = hashMMap_.bucket( someKey)
?这就是我的想法,因为bucket()
boost 网站对功能的解释是:
返回:存储桶的索引,其中包含键为 k 的元素。
我认为这意味着我必须首先find(key)
在多映射中知道键是否存在,因为调用bucket(key)
将返回一个索引,该索引不是散列,而是散列表中散列 ( bucket_from_hash
) 的模数,如果存在则存储键. 因此,由于使用 完成的模数bucket_count
,如果未插入密钥,我将遍历一个虚拟存储桶,在当前情况下它将位于其中,对我来说最重要的是:也可能存在不同的哈希,因为 bucket_count 可能是小于我的哈希(我使用 16 位MyHash<key>
的 32 位密钥作为提供给多映射构造函数的哈希函数)。这个对吗?
c++ - 将 unordered_set 存储为 unordered_map 中的键是个好主意吗
我希望将 unordered_set 作为键存储在 unordered_map 中,这是个好主意还是我应该使用 std::set 存储一些数据,然后使用 std::map 将 std::set 存储为键。哪个更适合性能/查找?
任何建议都会有所帮助
c++ - 带有公历日期的 unordered_map
我想存储boost::gregorian::date
为 a 的键,boost::unordered_map
但我无法编译代码,因为它缺少此类的正确哈希函数。
- 一个简单的解决方案是转换
std::string
并存储它。我可能想避免这种解决方案,因为使用字符串非常昂贵。 - 我试图找到一些将日期导出为数字的函数,但我只能读取该
day()
函数,我不确定这是否真的合适。 - 也许我可以计算我的日期和参考日期之间的天数?
还有其他更好的方法来存储日期或将日期导出为数字的函数吗?
c++ - 动态 equal_to 函数 unordered_map 提升
我有一个到 int 的无序映射字符串,它使用定义为的自定义 equal_to 函数:
基本上,如果两个键的汉明距离等于或小于 8,则它的作用是相同的键。
问题是我希望距离阈值是动态的,以便让用户通过命令行设置它。而不是 8,一个可变阈值或类似的东西。
我不是在寻找像全局变量这样的技巧(除非它是实现这一目标的唯一方法),而是在寻找“好方法”。
c++ - C++ 程序中的内存使用情况
我编写了一个程序,该程序需要使用以下库处理非常大的数据:
- 向量
- boost::unordered_map
- boost::unordered_multimap
所以,我遇到了内存问题(程序使用了很多),我在想也许我可以替换这个库(用已经存在的东西或我自己的实现):
所以,三个问题:
- 如果我用 C 数组替换向量,我会节省多少内存?这值得么?
- 有人可以解释在当前实现中 boost::unordered_map 和 boost::unordered_multimap 中的内存是如何使用的吗?就像为了实现它们的性能而存储的一样。
- 你能给我推荐一些在内存使用方面优于 boost::unordered_map 和 boost::unordered_multimap 的库吗(但不是太慢)?
c++ - 等于boost::unordered multimap
equal_to<Key>
boost::unordered_multimap中函数的目的是什么?
在文档中它说是确定两个键是否相同,但对我来说并不完全清楚。
我的猜测是,使用equal_range
带有输入键K的函数,它将检索在相应存储桶中索引但其键与K相同的对键、值equal_to<key>
。
如果我错了,请纠正我。
c++ - 如何确保自定义数据的 boost::unordered_set 中没有重复项
我需要我的容器只包含独特的元素,所以我有一个这样的结构:
和一个容器:
现在我需要改变我的容器来boost::unordered_set
输入,我需要修改仿函数吗?我很困惑,因为我知道我无法将 order 和 uniqueness 实现分开,而这一次容器不是 ordered 。所以我担心我的operator()
超载将毫无用处。