问题标签 [bimap]

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 回答
564 浏览

visual-c++ - 将值添加到 boost::bimap 中的多重集

我想使用 boost::bimap 的多图版本,我正在关注这个,

Boost::Bimap 等价于双向多图

这显示了如何在结构中添加和检索值。我正在尝试根据映射到左侧多个值的右侧值进行查找,如果找到,我想添加到左侧的列表中。例如,假设这是 bimap,

当你做 bimap.left.equal_range(1);

你得到

1=>1 1=>2

我想更新它,使其也映射到 3,即,将 3 添加到列表中,以便下次bimap.left.equal_range(1);完成时,这将是结果,

1=>1 1=>2 1=>3

我怎样才能得到右边的列表,以便我可以像上面提到的那样修改列表(而不仅仅是一个 const 迭代器,只查看值)。

TIA

0 投票
0 回答
339 浏览

c++ - 高效搜索bimap

我有一个bimap长度约。280000,我正在搜索这个bimap值至少 1800 万次。bimap下面给出了我随身携带的最小示例;

1800万次搜索bimap大约需要7秒。我想知道如何提高搜索时间。另一个是,我有 unordered_set_of<>and unordered_multiset_of<>,这有助于我创建bimap比使用set_of<>and更快multiset_of<>的搜索时间,搜索时间约为。两种情况都一样。我还想将长度扩展bimap到 1.7 亿,搜索量约为。5亿次。那么,我怎样才能提高搜索时间呢?

unordered_map<>不是解决方案,因为我想要双向访问。

0 投票
1 回答
70 浏览

c++ - 将bimap写入二进制文件然后读取它

我想知道如何将一个bimap实际上太大(1.8 亿到 30 亿个条目)的二进制文件写入二进制文件,然后读取以执行一些操作。为了创建一个bimap我有以下代码,我在其中创建了两个流来写入和读取二进制数据。我还将元素插入到bimap.

我想写bimap,然后再读一遍以执行一些操作。怎么做。

0 投票
3 回答
539 浏览

java - 编写双向映射时如何解决“方法的擦除与另一种方法相同”

我目前正在尝试编写双向地图,因为(据我所知)Java 没有提供。我的代码如下。

Eclipse 给我错误“方法 get(E) 的擦除与 SaveManager.ColourCharTwoWayMap 类型中的另一种方法相同”。通过谷歌搜索,我了解到 Java 不喜欢做同样事情的泛型方法,这与覆盖和 Java 不知道使用什么方法有关。这一切都超出了我的想象。

有什么更好的方法来做我上面想做的事情?(即有一个方法接受一个类型为 E 的对象并返回一个类型为 F 的对象,反之亦然)。

0 投票
0 回答
306 浏览

java - 如何在 BiMap JAVA 8 中添加值?

我正在尝试创建一个 BiMap。

它工作正常,但有没有更好的方法来做到这一点?我正在努力改进我的编码。请建议我如何优化此 Bi Map 创建?

0 投票
1 回答
686 浏览

java - 同步 BiMap 逆视图的同步

Maps.synchronizedBiMap()方法指出

当访问任何集合视图时,用户必须在返回的地图上手动同步。

这是否包括inverse()BiMap 的视图?例如,如果变量按照以下示例进行初始化,那么从其他线程调用是否会出现问题(例如,更改在调用 any或时inverse.put()不可见,即使发生在之前)?get()mapinverseput get

如果这实际上是一个问题,是否有解决此问题的标准/推荐方法?

// 编辑

查看实现,似乎inverse()aSynchronizedBiMap也是 a SynchronizedBiMap,共享相同mutex。这是否意味着所描述的问题不存在?非常感谢 Guava Collections 专家的确认;)

0 投票
5 回答
11620 浏览

dictionary - 如何在 Kotlin 中反转地图?

我正在尝试在 Kotlin 中反转 Map。到目前为止,我想出了:

在不使用中间人(中间人)的情况下,有没有更好的方法呢?

0 投票
1 回答
82 浏览

c++11 - Boost BiMap 解析模板错误

当我添加#include<boost/bimap.hpp> 我想从它的值中找到映射的键时,我遇到了解析模板错误,因此我想到了使用 Boost 的 Bimap 但得到以下错误。

0 投票
1 回答
140 浏览

c++ - boost::bimap 对内射函数来说是不是矫枉过正?

令 T_1 和 T_2 为两种类型, f: Dom(T_1) -> Dom(T_2) 为非双射的单射函数;为了讨论起见,假设我将 f 表示为不同的对,而不是用于计算它的代码。现在,我需要能够相对快速地应用 f 和 f^{-1},所以我正在考虑每个方向的地图。然后我想到我可能想要一个用于这两个映射的数据结构——因为我有多个这样的 f。

我很自然地想“嗯,我确定 Boost 肯定有这样的东西”,事实上,Boost 有一个Bimap结构。问题是,它适用于一般的二元关系;此外,它必须考虑重复插入的可能性,而无需每次都重新优化结构,而在我的情况下,我只插入一次,然后进行多次查找。所以,我觉得 bimap 对我来说可能有点矫枉过正,并且没有针对我的用例进行优化。真的吗?

笔记:

  • 我对以空间为代价的时间复杂度(和实际时间)感兴趣。
  • 非内射 f 的相同问题(其中 f^{-1} 是非函数关系)。
0 投票
1 回答
221 浏览

c++ - C++ bimap 是否可以在视图的一侧具有与视图值的另一侧不同的键?怎么做?

一开始我需要一张地图,所以我使用了std::map。
然后,添加了一些要求,我还需要获取“值”的“键”(bar 的 foos),所以我使用了

在那之后,添加了一些更多的要求,所以现在我需要为每个 foo 存储一个数字,并且从右侧视图我需要能够调用<bimap>.righ.find(bar)并获取成对的(foo + number stored for foo),但我仍然希望能够打电话<bimap>.left.find(foo)和得到吧。

如何做到这一点?如果可能的话,我更喜欢一些现代 C++ 而不是 boost,但我想如果没有 boost,就很难拥有 bimap 功能。

编辑:我应该注意尺寸很重要,所以我不想存储任何涉及的部分两次,速度也很重要。

我应该有类似
"foo1"+100 <-> "bar1"and 的东西"foo2"+300 <-> "bar4"
我希望能够调用<bimap>.left.find("foo1")并获取“bar1”,
但也可以<bimap>.right.find("bar1")获取pair(“foo1”,100)。