问题标签 [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.

0 投票
1 回答
441 浏览

c++ - 关于 boost bimap 中 unordered_multiset_of 的问题

我正在实现一个boost::bimap并且我正在考虑使用unordered_multiset_ofunordered_multiset_of需要将一个哈希函数和相等运算符传递给它。而且我做错了。

似乎我的哈希函数和 equal_to 函数给出了错误。我如何解决它?我相信std::equal_to()会自动调用我定义的 == 运算符MyClass,对吧?

0 投票
1 回答
926 浏览

c++ - 如何在 boost::unordered_map 中实现 TryGetValue?

C#我喜欢TryGetValue的方法中,Dictionary因为它允许我在一次调用中确定字典是否包含键,如果是则接收值:

我应该如何做同样的事情boost::unordered_map

0 投票
1 回答
821 浏览

c++ - 双端队列无效下标。为什么我会收到此错误?

我在以下代码中收到执行错误。关于可能导致它的任何建议? Error : Invalid deque <T> subscript

更多信息:

上述方法是静态方法。并且该程序是多线程的。由于多个线程访问它而发生此错误的任何机会。我有这样的假设,但后来认为上面的函数参数不可能一次相同。

0 投票
1 回答
972 浏览

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 位密钥作为提供给多映射构造函数的哈希函数)。这个对吗?

0 投票
1 回答
750 浏览

c++ - 将 unordered_set 存储为 unordered_map 中的键是个好主意吗

我希望将 unordered_set 作为键存储在 unordered_map 中,这是个好主意还是我应该使用 std::set 存储一些数据,然后使用 std::map 将 std::set 存储为键。哪个更适合性能/查找?

任何建议都会有所帮助

0 投票
1 回答
530 浏览

c++ - 带有公历日期的 unordered_map

我想存储boost::gregorian::date为 a 的键,boost::unordered_map但我无法编译代码,因为它缺少此类的正确哈希函数。

  1. 一个简单的解决方案是转换std::string并存储它。我可能想避免这种解决方案,因为使用字符串非常昂贵。
  2. 我试图找到一些将日期导出为数字的函数,但我只能读取该day()函数,我不确定这是否真的合适。
  3. 也许我可以计算我的日期和参考日期之间的天数?

还有其他更好的方法来存储日期或将日期导出为数字的函数吗?

0 投票
2 回答
243 浏览

c++ - 动态 equal_to 函数 unordered_map 提升

我有一个到 int 的无序映射字符串,它使用定义为的自定义 equal_to 函数:

基本上,如果两个键的汉明距离等于或小于 8,则它的作用是相同的键。

问题是我希望距离阈值是动态的,以便让用户通过命令行设置它。而不是 8,一个可变阈值或类似的东西。

我不是在寻找像全局变量这样的技巧(除非它是实现这一目标的唯一方法),而是在寻找“好方法”。

0 投票
5 回答
1257 浏览

c++ - C++ 程序中的内存使用情况

我编写了一个程序,该程序需要使用以下库处理非常大的数据:

  • 向量
  • boost::unordered_map
  • boost::unordered_multimap

所以,我遇到了内存问题(程序使用了很多),我在想也许我可以替换这个库(用已经存在的东西或我自己的实现):

所以,三个问题:

  • 如果我用 C 数组替换向量,我会节省多少内存?这值得么?
  • 有人可以解释在当前实现中 boost::unordered_map 和 boost::unordered_multimap 中的内存是如何使用的吗?就像为了实现它们的性能而存储的一样。
  • 你能给我推荐一些在内存使用方面优于 boost::unordered_map 和 boost::unordered_multimap 的库吗(但不是太慢)?
0 投票
1 回答
184 浏览

c++ - 等于boost::unordered multimap

equal_to<Key>boost::unordered_multimap中函数的目的是什么?

在文档中它说是确定两个键是否相同,但对我来说并不完全清楚。

我的猜测是,使用equal_range带有输入键K的函数,它将检索在相应存储桶中索引但其键与K相同的对键、值equal_to<key>

如果我错了,请纠正我。

0 投票
1 回答
235 浏览

c++ - 如何确保自定义数据的 boost::unordered_set 中没有重复项

我需要我的容器只包含独特的元素,所以我有一个这样的结构:

和一个容器:

现在我需要改变我的容器来boost::unordered_set输入,我需要修改仿函数吗?我很困惑,因为我知道我无法将 order 和 uniqueness 实现分开,而这一次容器不是 ordered 。所以我担心我的operator()超载将毫无用处。