问题标签 [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.
c++ - 使用基于嵌套值的索引来提升多索引容器
如果我有这样的对象:
我可以为它创建一个多索引容器,如下所示:
但是,如果我有这样的课程:
如何.bar().property()
为Foo
对象容器构建索引?
通常我会嵌套调用boost::bind
,但我不知道如何使它在多索引容器的上下文中工作。
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
使用,因为parts
和used_time
描述了一个唯一的intermediate_result
(并且它在我的数据结构中应该是唯一的)但是这max_value
是我必须考虑的另一个索引,因为我的算法总是需要intermediate_result
最高的max_value
。
所以我尝试将boost::multi_index_container
withordered_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在这方面没有帮助我..)
c++ - 使用 hashed_unique_index 提升多索引会产生编译器错误
我在THIS THREAD中了解了如何将hashed_unique<>
索引与 a composite_key
using 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'
代码在这里,有谁知道哪里错了?:-?
完整的错误消息是:
c++ - 使用 Boost Multi-Index 搜索多个指标
如何boost::multi_index
通过先前搜索的结果限制搜索?例如:假设我有一个矩形类,其内部值如下:
我需要一个此类对象的数据结构来回答诸如“给定一个input_rectangle
- 哪个对象MyRect
包含在该矩形中并且具有最高值?”之类的查询。
我可以像这样使用“multi_index”:
如果我input_rectangle
有宽度input_width
,我可以使用这样的东西:
但是如何限制两个给定迭代器对 coresp 高度的搜索?(然后在该结果中找到具有最高值的对象?)
c++ - 保留插入顺序的 C++ 哈希映射
我有以下代码:
但是,我正在寻找保留顺序的东西,以便稍后我可以按照插入元素的相同顺序迭代元素。在我的电脑上,上面的代码不保留订单,并打印以下内容:
我想也许我可以使用boost::multi_index_container
有人可以告诉我如何使用这个容器(或任何其他适当的容器)实现我的原始代码,以便迭代器遵循插入顺序吗?
c++ - Boost.MultiIndex:如何进行有效的集合交集?
假设我们有一个data1
和data2
。我怎样才能与它们相交std::set_intersect()
?
c++ - 带有常量表达式的模板:VC++2008 的错误 C2975
我正在尝试使用元编程元素,但在第一次尝试时碰壁了。我想要一个比较器结构,可以使用如下:
在哪里:
我错过了什么?
亲切的问候阿尔曼。
抱歉,我没有复制完整的错误消息。完整错误:
replace - multi_index 复合键替换为迭代器
无论如何要遍历 boost::multi_index 中的索引并执行替换?
boost - 提升 multi_index ordered_unique 中值
我想快速从带有 ordered_unique 索引的 boost multi_index 容器中检索中值,但是索引迭代器不是随机访问(我不明白为什么它们不能,尽管这与 std::set 一致...)。
除了增加迭代器 container.size() / 2 次之外,还有更快/更整洁的方法吗?