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

c++ - 大数据集小数据的多重索引:空间效率低下?

我根本不是数据库设计方面的专家,所以在我尝试用 CS 术语翻译它之前,我会用简单的语言表达我的需求:我正在尝试找到正确的方法来快速迭代大型子集(比如 ~100Mo 的 double ) 的数据,在一个可能非常大的数据集中(比如几个 Go)。我有基本上由 4 个整数(键)和值组成的对象,一个简单的结构(1 双 1 短)。由于我的键只能采用少量值(数百个),我认为将我的数据保存为树是有意义的(键为 1 个深度,值是叶子,至少在我的幼稚视图中很像 XML 的 XPath) .

我希望能够根据键值/这些键值的函数遍历叶子子集。要过滤的组合键会有所不同。我认为这称为横向搜索?
因此,为了避免比较 n 次相同的键,理想情况下,我需要通过键的每个排列来索引数据结构(12 种可能性: !4/!2 )。这似乎boost::multi_index 是为了什么,但是,除非我忽略了 smth,否则这样做的方式实际上是构建这 12 个树结构,将指向我的值节点的指针存储为叶子。考虑到与键相比,我的值很小,我想这将是非常空间效率低下的。

任何关于我应该使用的设计/数据结构的建议,或者关于这些主题的简明教育材料的指针都将非常感激。

0 投票
1 回答
261 浏览

c++ - Boost.MultiIndex 空间操作

我需要一个应用程序的空间图。我找到了 Boost.MultiIndex。
我按照它的教程了解了如何创建一个类型:

以及如何插入它:

如何根据值xy坐标检索值?以及如何检查那里是否有值?

0 投票
1 回答
642 浏览

c++ - Boost::Multiindex vs 字符串索引 boost::unordered_map

我需要一个包含唯一元素的容器,以便使用三元组 int 访问,并且每个 int 可以超过 1.000.000.000。

(实际上只有少数元素会被填充,实际上这些元素本身就是 boost::unordered_map )。

拥有像 boost::multiindex (或者我不知道的其他东西)这样的多索引数组或者只是一个以组合字符串作为键的 boost::unordered_map 是否更快?

0 投票
1 回答
3954 浏览

c++ - Boost.MultiIndex:使用多个字段搜索元素

我正在使用 Boost multi_index 容器根据 2 个整数键 K1 和 K2 存储对象。我可以轻松地检索满足“K1 == X”的所有元素的迭代器,例如,通过获取第一个索引并使用 find() 函数(K2 的同义词和值 Y),但我正在寻找一种方法在满足 K1 == X 和 K2 == Y 的所有元素上获取迭代器。一个明显的解决方案是在满足 K1 == X 的所有元素上获取迭代器,然后使用谓词 K2 == Y 构建 boost::filter_iterator,但是有没有办法只从 Boost.MultiIndex 中做到这一点(也许更有效)?

谢谢

马蒂厄

0 投票
0 回答
297 浏览

c++ - multi_index_container 和虚拟列表控件

我很难使用 multi_index_container。

这基本上是我需要的:

  • 虚拟列表控件。
  • 以多种方式对项目进行排序(所以我想使用 multi_index_container)。
  • 根据项目在列表控件中的排序和显示方式随机访问项目。
  • 保持项目的原始插入/记录顺序。
  • 在列表控件中移动项目、插入和删除项目(并相应地更新容器)。

到目前为止,我一直在同步使用多个向量/映射(显示列表位置映射到真实数据等),所以移动到 multi_index_container 会非常好。

我尝试编写原始代码的最小版本(或尝试编写它)。

非常感谢您对此的任何帮助!:)

0 投票
1 回答
405 浏览

c++ - BOOST 多指标

我正在尝试使用 Boost 的多索引容器进行快速查找,但我很难找到。我发现一些文档有点令人困惑。这是我所拥有的:

所以现在如果我尝试搜索所有的dummreport报告,我会出现错误:

我这样做对吗?我需要一个循环来获取该类型的所有报告吗?还是我完全滥用了这个?

谢谢

0 投票
1 回答
360 浏览

boost - 共享内存中的`boost::multi_index_container`?

我会对共享内存中的多索引容器之类的东西感兴趣。

是否可以分配,例如,boost::multi_index_container在共享内存中,以便不同的可执行文件可以读取/写入其数据?如何?

谢谢。

0 投票
4 回答
4338 浏览

c++ - 在 C++ 中具有哈希映射的复合键

我有一个数据结构,

由于书名或作者可以重复,我想构建一个复合键。(假设我不能制作额外的唯一键,例如 ID)

由于数据非常庞大,为了速度,我使用 GCC unordered_map,我构建了这样的结构:

一般来说,一切正常,但是当我想引用一个特定的键时就会出现问题。

例如,假设我想在标题为“数学”的书籍中找到评分最高的书籍,或者我想找到“托尔斯泰”书籍的平均收视率。
在这种情况下,这变得非常麻烦,因为我不能只引用其中一个密钥对。

我碰巧找到了,boost::multi_index但我在理解这些文件时遇到了一些麻烦。有没有人对此有一些想法或指导?

制作多个索引的解决方案,multi_index 的简洁示例,任何其他方法等。任何帮助将不胜感激。

谢谢你。

0 投票
2 回答
439 浏览

c++ - 提升::multi_index。更快的解决方案?

我昨天发布了一个问题,我通过使用 multi_map 解决了这个问题: 在 C++ 中拥有一个哈希映射的复合键

这就像一个魅力,但是当 datasrt 足够大时,问题就会发生。

我的数据集大约有 10M 大,有序索引需要 +350 秒,而散列索引(无序)需要 80 秒才能插入。
与只需要 25 秒的 map(pair, double) 数据结构相比,这是一个相当长的时间。

有人知道提高计算速度吗?内存消耗还可以,但速度对我来说真的很重要。

0 投票
2 回答
489 浏览

c++ - 探索 boost::multi_index 时的 SIGSEGV

我一直在拔头发来找出这个段错误,并决定寻求帮助。
我有一个boost::multi_index容器,其中包含(string, string, double)并且在某些时候遇到了段错误。

这是我的代码的简化版本:

这段代码看起来工作得很好,但它只有在遇到某个特定的令牌时才会崩溃。(相反地,当它不符合令牌时它永远不会崩溃)。
我猜这是因为it超出了容器本身的范围,但不明白它是如何发生的。

GDB 错误消息显示:

当我调用 while 条件时,它显然会崩溃it->str1(),而不是因为令牌向量。我怎样才能防止这种情况?我试图在if(it == myContainer.get<str1>().end()) break;下面添加*it++,但没有帮助。
有人能给我一些线索吗?
谢谢!