问题标签 [boost-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.
c++ - C ++数据结构用于存储两组唯一元素之间的多种关系
我正在做一个项目,我有两组独特的元素。一组中的任何元素都可能与另一组中的任何元素相关。
例子:
第 1 组:{A、B、C}
第 2 组:{1、2、3、4}
允许的关系:
(A, 1) (A, 3)
(B, 1) (B, 4)
(C, 1) (C, 3) (C, 4)
单个关系表示为一对括号内的两个集合元素。
在我的特定项目中,两个集合的元素都是对象,我希望对存储的所有对象的所有引用都解析为一个对象(例如,所有包含 A 的关系都将引用同一个对象 A,同样适用于对关系另一端的其他集合的引用)。
我正在考虑使用 Boostbimap
来解决这个问题。我正在查看用于 bimap 左右半部分的潜在集合类型以及两组之间的关系,并一直在尝试确定哪些是正确的。
对于. bimap
_ set_of
CollectionType
_bimap
但是,当我在实践中尝试过时,在插入关系 (A, 1) 后,我最终无法插入关系 (B, 1),因为插入必须在左侧都有效以及让它发生的正见。为了纠正这个问题,我将CollectionType
两半的multiset_of
. 但是,所有值都已正确插入,这是否意味着我bimap
现在拥有原始集合元素的重复副本?
为了尝试纠正这一点,我开始考虑更改bimap
. 由于关系类型的集合类型默认为左半边的集合类型bimap
,我认为multiset_of
不正确,将其指定为set_of
。但是,我不确定这是否解决了我的原始问题,即我的原始集合中有多个对象副本。
我真正需要的是查看 Set 2 中与 Set 1 中的元素相关的所有对象。Boostbimap
对我来说是正确的路线吗?我选择的收藏和关系类型是否正确?顺便说一句,我正在尝试自定义我的地图以具有快速搜索时间,而不用担心插入时间(永远不会发生删除和修改,地图已初始化,然后仅用于之后的查找)。我应该只写一个自定义数据结构吗?
c++ - 声明 C++ 中的说明符冲突
我使用数据结构bimap
它在主文件中工作正常。但是,我有兴趣在头文件中使用它以使其在任何其他.cpp
文件中都可以访问。
当我试图让它extern
像my.h
'hash_bimap' extern typedef boost::bimap< std::string, int > hash_bimap 声明中的说明符冲突;
c++ - 有没有多维双向多图类型的东西
一切都很顺利,直到我有了一维数据,我用过Bidirectional Multimap
的地方
我的需要是以多维性质存储日期。假设我有很多帧1
, 2
, 3
, 包含键和值。
如何bidirectional multimap
为我有很多行 ( 1
, 2
, 3
) 的数据维护类似的结构,以便所有帧都可以像bidirectional multimap
. 例如,我应该能够通过任何框架并访问其中的键和值bi-direction
注意:我没有兴趣维护三个单独bidirectional multimap
的 ,每个帧一个,实际上我正在寻找多维性质的解决方案,就像我们有vector of vectors
或multi dimensional array
。
c++ - OPERATOR_BRACKET_IS_NOT_SUPPORTED 在 boost::bimap 上
我正在尝试在 a 上使用括号运算符boost::bimap
但没有成功。
对于我寻求解决的问题,我需要一个bimap
满足以下要求的:
- 左 排序,唯一
int
- 正确的非唯一,非排序类型
这导致我typedef
为我的bimap
,
我想在这种类型上使用括号运算符但没有成功。这是我使用的代码,
这给了我一个很长的编译错误,其中重要的一点似乎是
(完整的现场示例和编译器输出可以在:rextester上找到)
我尝试了下面的解决方案,但它仍然会产生错误,
如何声明bimap
满足我的要求并支持括号运算符的 a?
c++ - 如何使bimap中的两个或多个元素作为键
我想知道是否可以插入两个或多个元素bimap
作为键。我有一个bimap
使用一个元素键的最小示例
现在我可以有类似的东西吗
c++ - 使用 bimap 中的键访问值
我正在尝试获取通过其键访问的值。到目前为止,我有一个最小的示例,并且仅适用于左侧访问。
当我尝试使用配对键从右侧查看值时,作为线索,我尝试了以下操作。
> 错误:'boost::bimaps::bimap, boost::bimaps::multiset_of > >::right_map {aka class boost::bimaps::views::multimap_view, boost::bimaps::multiset_of >, mpl_:: na, mpl_::na, mpl_::na> >}' 没有名为 'at' 的成员 auto itt = numbers.right.at({100000,50000});
上述行不起作用。我也想知道是否可以通过仅使用配对键的一个元素来访问,例如
c++ - 查找bimap中重复元素的所有键
我想访问bimap
. 我在下面有一些示例代码
在上面的代码中,我在右侧重复了元素。上面的代码给了我元素的第一个键100000
,即123456 <--> 100000
。但是我还有一个元素条目100000
,如何访问重复元素的所有键(该元素可能多次出现,左侧有唯一键)。
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++ - boost bimap中的最大条目数是多少
我正在尝试创建boost bimap
总共 1.77 亿个条目。我创建了一个boost bimap
并且输入了元素,但是在达到1亿时停止输入元素,66000个条目。我想知道是否有任何最大限制boost bimap
,或者可能存在其他问题。