问题标签 [boost-multi-index]

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 投票
0 回答
155 浏览

algorithm - 查找给定输入的所有子集的联合,其组合与任何给定行完全匹配

我正在尝试以有效的方式解决算法问题。下面是问题

我将以字符为例来解释这个问题,但实际上它可以是任何东西(char、int、string、double、object 等)。我怀疑这应该/会有所作为

我有包含一组字符的行列表,假设下面是六个列表

1 - A、B、C
2 - B、D
3 - E
4 - A
5 - F、B
6 - F、C

现在给定一个用户输入,我们希望找到给定输入的所有子集的联合,其任何组合都可以与上述任何行完全匹配。我将通过以下示例进行解释

输入案例 1 - A、C

现在在这种情况下,我们的输入为 A,C,因此我们将尝试匹配是否有任何行恰好包含 A,C,但我们不会找到任何行。接下来,我们将尝试查找仅包含 A 的任何行,我们发现有 1,然后我们将尝试仅查找 C 的行,但我们不会找到,因此在这种情况下,输出将是 A

输出 - A

输入案例 2 - F、B、C

现在在这种情况下,我们将看到没有仅包含 F、B、C 的行,因此我们将尝试组合,即 F,B &我们将有第 5 行,然后是 F,C,我们将看到我们有行号6 为它。考虑到这个输入的所有元素现在都被覆盖了,我们不需要继续进一步,但是如果任何元素都未被覆盖,我们还需要查看其他组合(比如 B、C & 然后 B & 然后 C & 然后 F )

输出 - F、B、C

输入案例 3 - L、B、C

现在在这种情况下,我们可以看到没有可以匹配任何行的上述元素的组合,因此输出为 Null

输出 - 空集

输入案例 4 - F、B、D、C

现在在这种情况下,我们看到没有包含所有元素的行,因此我们尝试查看是否有一些行匹配 F、B、D 或 B、D、C 或 F、C、D 等......并继续类似地我们将查找输出将是 F、B、D、C(F、B 和 F、C 和 B、D 的行涵盖所有元素)

输出 - F、B、D、C

我正在寻找一种有效的方式来获得输出。我可以以任何方式存储数据(设置/映射/多索引等)

0 投票
3 回答
1075 浏览

c++ - 为什么 `boost::multi_index replace` 不能用于指针类型?

简短回答:用户modify改为,接受答案中的详细信息以及此答案

我正在尝试使用boost::multi_index_container持有指针类型。在我看来,该replace功能已损坏,并且想知道我做错了什么。

下面的代码演示了两种情况:第一个容器保存数据的副本(正常工作),第二个容器保存指向数据的指针(失败)。

0 投票
2 回答
171 浏览

c++ - 如何更新 boost::multi_index_container 中的重叠索引?

我正在使用 boost 1.48.0,我没有升级选项。

我已经构建了一个 multi_index_container,其中的索引具有重叠标准。共享相同索引标准的索引是如何产生影响的,如下例所示?示例代码的最后一行暗示了我的要求。

城市索引与 street_address_key 共享相同的标准。据我了解,通过 street_address_key 进行修改将确保索引得到适当更新。但“城市”指数的状态如何?是否更新以反映城市名称的变化?还是处于破损状态?我还能找到与旧城区相同的地址索引吗?我必须单独更新这个索引吗?我可以调用无操作修饰符来更新索引吗?

0 投票
0 回答
28 浏览

boost - 如何获得在 boost 多索引容器中的插入顺序?

免责声明:我是 multi_index_container 的新手

我正在创建一个带有三个比较器的 boost multi_index_container。我想要一个额外的标准,让我知道插入容器的顺序。这可能吗?

0 投票
1 回答
87 浏览

boost - 可以获得 std::vector::const_iterator 来自多索引容器索引?

我正在使用枚举器为 UI 提供服务的系统中转换一些代码。不幸的是,枚举器是围绕std::vector<T>::const_iterator. 也就是说,它需要一个类型为 的开始和结束迭代器std::vector<T>::const_iterator

我想将数据源的底层容器从向量转换为提升多索引容器。这很好用,直到我必须为枚举员服务。

我的问题是,是否可以将多索引容器索引迭代器转换为std::vector<T>::const_iterator?

0 投票
1 回答
776 浏览

boost - 如何在不影响插入顺序的情况下替换多索引容器中的项目?

我有一个带有四个索引的多索引容器。其中一个索引是随机访问索引,用于维护插入顺序。当容器元素的属性在外部更新时,我希望更新相关索引。但是,我想保留插入顺序。

我想知道如果我替换有问题的值,插入顺序是否会受到影响。如果没有,我怎样才能做到这一点?

0 投票
2 回答
717 浏览

c++ - 共享内存大小计算c++

我保留了两个对象shared memory,其中一个是一个类,它是:

另一个是boost::multi_index_container包含该类型对象的 a:

因此,当我构建共享内存时,我以这种方式计算大小:

因此,当我设置时,TEST_CONTAINER_SIZE = 10000;我希望我可以插入10000 TestObj到共享内存中的 multi_index 容器中。3071th但是当我运行程序时,它会触发一个与item中的共享内存大小相关的异常。

multi_index 容器本身是否有任何开销,或者在计算共享内存的大小时我是否遗漏了任何其他东西?

谢谢。

编辑:

因此,在我当前的实现中,我的 multi_index 容器和分配如下所示:

因此,既然我知道我的容器中有多少物品,那么最有效和最稳定的分配方式是什么?

0 投票
1 回答
1245 浏览

c++ - How can I preserve sequenced order with an ordered_non_unique index?

I have a boost::multi_index_container indexed by an ordered_non_unique key as well as sequenced. When I iterate over the non-unique index, the entries come out in the order they were added to the container rather than their position in the sequence.

How can I set up the non-unique index so that it preserves the insertion order? I tried making a composite_key with ordered_non_unique and sequenced, but since sequenced isn't a keyed index it doesn't compile.

Here's a minimal example (live version here):

0 投票
1 回答
111 浏览

c++ - boost的多索引复制键对象

boost::multi_index 是否创建密钥对象的副本。这个问题出现在我的脑海中,因为 std::map 必须根据它的设计存储一个关键对象。然而 boost::multi_index 并没有明确地要求密钥,而是从存储的对象中收集。

另一个问题是,如果 boost::multi_index 确实创建了它的键的副本,是否有任何容器不创建它的键的副本以将足迹保持在最低限度?

0 投票
1 回答
384 浏览

c++ - 在 boost multiindexmap 容器中插入条目时崩溃

我正在使用 Boost 多索引映射容器来支持我的应用程序中的缓存。但在插入过程中,我看到应用程序崩溃。我的代码看起来有点像这样

这次崩溃的原因可能是什么。

在此处输入图像描述

这是我在我的应用程序中得到的位置和崩溃。