问题标签 [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 投票
3 回答
2081 浏览

c++ - 使用基于嵌套值的索引来提升多索引容器

如果我有这样的对象:

我可以为它创建一个多索引容器,如下所示:

但是,如果我有这样的课程:

如何.bar().property()Foo对象容器构建索引?

通常我会嵌套调用boost::bind,但我不知道如何使它在多索引容器的上下文中工作。

0 投票
2 回答
2373 浏览

c++ - boost::multi_index_container 带有 random_access 和 ordered_unique

我在boost::multi_index_container同时使用随机访问和 orderd_unique 时遇到问题。(我很抱歉这个冗长的问题,但我想我应该举个例子..)

这里有一个例子:假设我想在工厂中生产 N 个对象,并且对于每个对象我都有一个需要满足的需求(这个需求在创建多索引时是已知的)。好吧,在我的算法中,我得到了中间结果,我将其存储在以下类中:

向量描述parts了产生了哪些对象(它的长度是 N,并且它在字典上比我的 coresp 需求向量小!) - 对于每个这样的向量,我也知道 used_time。此外,我得到了这个生成对象向量的值。

我有另一个约束,所以我不能生成每个对象——我的算法需要intermediate_result在数据结构中存储几个对象。在这里boost::multi_index_container使用,因为partsused_time描述了一个唯一的intermediate_result(并且它在我的数据结构中应该是唯一的)但是这max_value是我必须考虑的另一个索引,因为我的算法总是需要intermediate_result最高的max_value

所以我尝试将boost::multi_index_containerwithordered_unique<>用于我的“parts&used_time-pair”和ordered_non_unique<>我的max_value(不同intermediate_result的对象可能具有相同的值)。

问题是:决定哪个“parts&used_time-pair”更小所需的谓词std::lexicographical_compare在 my -vector 上使用,因此对于许多-objectsparts来说非常慢。intermediate_result但是会有一个解决方案:我对每个对象的需求不是那么高,因此我可以在每个可能的部分向量上存储中间结果唯一的used_time.

例如:如果我有一个需求向量( 2 , 3 , 1),那么我需要一个数据结构来存储(2+1)*(3+1)*(1+1)=24可能的部分向量,并且在每个这样的条目上都有不同的 used_times,它们必须是唯一的!(存储最小的时间是不够的——例如:如果我的额外限制是:满足给定的生产时间)

但是如何将random_access<>-index 与ordered_unique<>-index 结合使用?
Example11在这方面没有帮助我..)

0 投票
2 回答
1394 浏览

c++ - Boost Multi-Index:散列索引的向量和 int 的复合键

正如我刚刚在另一个问题中了解到的那样,我可以将 acomposite_key用于具有 astd::vector和整数的结构。现在我的问题是:我可以以某种方式使用它来处理 hashed_indecies 吗?

这里有一个类似于THIS的示例:

问题是(当然) astd::vector<int>不是合适的哈希键。我可以把这段代码放在一个优雅的包装器(或类似的东西)中,以便从每个条目中生成一个哈希键my_vec吗?

0 投票
2 回答
2372 浏览

c++ - 使用 hashed_unique_index 提升多索引会产生编译器错误

我在THIS THREAD中了解了如何将hashed_unique<>索引与 a composite_keyusing an int 和 a一起使用std::vector<int>。但不幸的是,以下代码会产生相当多的错误消息:

1> boost/multi_index/hashed_index.hpp(439) : error C2784: 'size_t .. composite_key_hash<...>::operator ()(const boost::tuples::tuple<...> &) const' :无法推断模板参数for 'const boost::tuples::tuple<...> &' from 'const unique_property'

代码在这里,有谁知道哪里错了?:-?

完整的错误消息是:

0 投票
2 回答
2355 浏览

c++ - 使用 Boost Multi-Index 搜索多个指标

如何boost::multi_index通过先前搜索的结果限制搜索?例如:假设我有一个矩形类,其内部值如下:

我需要一个此类对象的数据结构来回答诸如“给定一个input_rectangle- 哪个对象MyRect包含在该矩形中并且具有最高值?”之类的查询。

我可以像这样使用“multi_index”:

如果我input_rectangle有宽度input_width,我可以使用这样的东西:

但是如何限制两个给定迭代器对 coresp 高度的搜索?(然后在该结果中找到具有最高值的对象?)

0 投票
2 回答
11282 浏览

c++ - 保留插入顺序的 C++ 哈希映射

我有以下代码:

但是,我正在寻找保留顺序的东西,以便稍后我可以按照插入元素的相同顺序迭代元素。在我的电脑上,上面的代码不保留订单,并打印以下内容:

我想也许我可以使用boost::multi_index_container

有人可以告诉我如何使用这个容器(或任何其他适当的容器)实现我的原始代码,以便迭代器遵循插入顺序吗?

0 投票
1 回答
627 浏览

c++ - Boost.MultiIndex:如何进行有效的集合交集?

假设我们有一个data1data2。我怎样才能与它们相交std::set_intersect()

0 投票
2 回答
2204 浏览

c++ - 带有常量表达式的模板:VC++2008 的错误 C2975

我正在尝试使用元编程元素,但在第一次尝试时碰壁了。我想要一个比较器结构,可以使用如下:

在哪里:

我错过了什么?

亲切的问候阿尔曼。

抱歉,我没有复制完整的错误消息。完整错误:

0 投票
1 回答
732 浏览

replace - multi_index 复合键替换为迭代器

无论如何要遍历 boost::multi_index 中的索引并执行替换?

0 投票
2 回答
379 浏览

boost - 提升 multi_index ordered_unique 中值

我想快速从带有 ordered_unique 索引的 boost multi_index 容器中检索中值,但是索引迭代器不是随机访问(我不明白为什么它们不能,尽管这与 std::set 一致...)。

除了增加迭代器 container.size() / 2 次之外,还有更快/更整洁的方法吗?