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

0 投票
2 回答
963 浏览

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对我来说是正确的路线吗?我选择的收藏和关系类型是否正确?顺便说一句,我正在尝试自定义我的地图以具有快速搜索时间,而不用担心插入时间(永远不会发生删除和修改,地图已初始化,然后仅用于之后的查找)。我应该只写一个自定义数据结构吗?

0 投票
1 回答
2836 浏览

c++ - 声明 C++ 中的说明符冲突

我使用数据结构bimap

它在主文件中工作正常。但是,我有兴趣在头文件中使用它以使其在任何其他.cpp文件中都可以访问。

当我试图让它externmy.h

'hash_bimap' extern typedef boost::bimap< std::string, int > hash_bimap 声明中的说明符冲突;

0 投票
0 回答
122 浏览

c++ - 有没有多维双向多图类型的东西

一切都很顺利,直到我有了一维数据,我用过Bidirectional Multimap的地方

我的需要是以多维性质存储日期。假设我有很多帧1, 2, 3, 包含键和值。

如何bidirectional multimap为我有很多行 ( 1, 2, 3) 的数据维护类似的结构,以便所有帧都可以像bidirectional multimap. 例如,我应该能够通过任何框架并访问其中的键和值bi-direction

注意:我没有兴趣维护三个单独bidirectional multimap的 ,每个帧一个,实际上我正在寻找多维性质的解决方案,就像我们有vector of vectorsmulti dimensional array

0 投票
2 回答
242 浏览

c++ - 如何为 boost::bimap.left 创建引用变量?

boost::bimap用来将整数映射到字符串:

我正在尝试创建引用变量,以便可以编写如下代码:

但是我很难解释Boost 文档,以了解什么是类型bimap::left

我试过了:

0 投票
1 回答
318 浏览

c++ - OPERATOR_BRACKET_IS_NOT_SUPPORTED 在 boost::bimap 上

我正在尝试在 a 上使用括号运算符boost::bimap但没有成功。

对于我寻求解决的问题,我需要一个bimap满足以下要求的:

  • 排序,唯一int
  • 正确的非唯一,非排序类型

这导致我typedef为我的bimap,

我想在这种类型上使用括号运算符但没有成功。这是我使用的代码,

这给了我一个很长的编译错误,其中重要的一点似乎是

(完整的现场示例和编译器输出可以在:rextester上找到)

我尝试了下面的解决方案,但它仍然会产生错误,

如何声明bimap满足我的要求并支持括号运算符的 a?

0 投票
1 回答
484 浏览

c++ - 如何使bimap中的两个或多个元素作为键

我想知道是否可以插入两个或多个元素bimap作为键。我有一个bimap使用一个元素键的最小示例

现在我可以有类似的东西吗

0 投票
1 回答
851 浏览

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});

上述行不起作用。我也想知道是否可以通过仅使用配对键的一个元素来访问,例如

0 投票
1 回答
466 浏览

c++ - 查找bimap中重复元素的所有键

我想访问bimap. 我在下面有一些示例代码

在上面的代码中,我在右侧重复了元素。上面的代码给了我元素的第一个键100000,即123456 <--> 100000。但是我还有一个元素条目100000,如何访问重复元素的所有键(该元素可能多次出现,左侧有唯一键)。

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

c++ - boost bimap中的最大条目数是多少

我正在尝试创建boost bimap总共 1.77 亿个条目。我创建了一个boost bimap

并且输入了元素,但是在达到1亿时停止输入元素,66000个条目。我想知道是否有任何最大限​​制boost bimap,或者可能存在其他问题。