问题标签 [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.
visual-c++ - 将值添加到 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
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<>
不是解决方案,因为我想要双向访问。
c++ - 将bimap写入二进制文件然后读取它
我想知道如何将一个bimap
实际上太大(1.8 亿到 30 亿个条目)的二进制文件写入二进制文件,然后读取以执行一些操作。为了创建一个bimap
我有以下代码,我在其中创建了两个流来写入和读取二进制数据。我还将元素插入到bimap
.
我想写bimap
,然后再读一遍以执行一些操作。怎么做。
java - 编写双向映射时如何解决“方法的擦除与另一种方法相同”
我目前正在尝试编写双向地图,因为(据我所知)Java 没有提供。我的代码如下。
Eclipse 给我错误“方法 get(E) 的擦除与 SaveManager.ColourCharTwoWayMap 类型中的另一种方法相同”。通过谷歌搜索,我了解到 Java 不喜欢做同样事情的泛型方法,这与覆盖和 Java 不知道使用什么方法有关。这一切都超出了我的想象。
有什么更好的方法来做我上面想做的事情?(即有一个方法接受一个类型为 E 的对象并返回一个类型为 F 的对象,反之亦然)。
java - 如何在 BiMap JAVA 8 中添加值?
我正在尝试创建一个 BiMap。
它工作正常,但有没有更好的方法来做到这一点?我正在努力改进我的编码。请建议我如何优化此 Bi Map 创建?
java - 同步 BiMap 逆视图的同步
该Maps.synchronizedBiMap()
方法指出
当访问任何集合视图时,用户必须在返回的地图上手动同步。
这是否包括inverse()
BiMap 的视图?例如,如果变量按照以下示例进行初始化,那么从其他线程调用是否会出现问题(例如,更改在调用 any或时inverse.put()
不可见,即使发生在之前)?get()
map
inverse
put
get
如果这实际上是一个问题,是否有解决此问题的标准/推荐方法?
// 编辑
查看实现,似乎inverse()
aSynchronizedBiMap
也是 a SynchronizedBiMap
,共享相同mutex
。这是否意味着所描述的问题不存在?非常感谢 Guava Collections 专家的确认;)
dictionary - 如何在 Kotlin 中反转地图?
我正在尝试在 Kotlin 中反转 Map。到目前为止,我想出了:
在不使用中间人(中间人)的情况下,有没有更好的方法呢?
c++11 - Boost BiMap 解析模板错误
当我添加#include<boost/bimap.hpp>
我想从它的值中找到映射的键时,我遇到了解析模板错误,因此我想到了使用 Boost 的 Bimap 但得到以下错误。
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} 是非函数关系)。
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)。