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

c++ - Boost.MultiIndex 数据结构中的通配符搜索?

我正在尝试通过减少对我的数据库的往返来优化我的应用程序。作为这项工作的一部分,我一直在将一些表移动到内存中,并将它们存储为Boost.MultiIndex容器。

作为这个过程的副作用,我失去了对字符串进行通配符匹配的能力。例如,当表存储在 MySQL 中时,我可以这样做:

但是,由于我现在使用带有 myString 键的 Boost.MultiIndex 容器,因此我似乎失去了这种能力。

显然,我可以使用 equal_range() 函数来查找与特定字符串完全匹配的所有条目:

但似乎进行通配符匹配的唯一方法是遍历整个结构并将每个键与 boost::regex 和 boost::regex_match() 进行比较。

有没有更好的办法?

0 投票
3 回答
3902 浏览

c++ - boost multi_index 是如何实现的

我很难理解 Boost.MultiIndex 是如何实现的。可以说我有以下内容:

我想我有一个数组,Employee[],它实际上存储了employee对象,还有两张地图

以姓名和年龄为键。每个映射都有employee*指向数组中存储对象的值。这个可以吗?

0 投票
2 回答
2536 浏览

c++ - 从 Boost 多索引迭代器获取数字索引

我正在存储一堆以下内容

在 Boost.MultiIndex 容器中,定义为

现在我有两个迭代器,一个 fromindex<by_title>和一个 from index<by_id>。在不添加数据成员的情况下,将这些索引转换为容器的随机访问部分的最简单方法是什么struct Article

0 投票
2 回答
1528 浏览

c++ - Boost multi_index:检索非唯一键的唯一值

我有一个boost::multi_index_container其元素是这样的结构:

主键(在数据库意义上)是 a composite_keyofab。存在其他键来执行各种类型的查询。

我现在需要检索一组所有不同的c. 这些值绝不是唯一的,但是遍历所有条目(尽管是有序的),或者使用std::unique似乎很浪费,考虑到不同值的c数量预计 << 比条目的总数(例如,10到 1000)。

我是否错过了一种更有效地获得此结果的简单方法?

0 投票
1 回答
457 浏览

c++ - boost::multi_index_container 编译错误,由于索引 typedef'ing 上的类型不完整

我正在使用 boost::multi_index_container (如下),并且在尝试对索引进行 typedef 时遇到编译错误:

错误详情:

尝试了使用的变体,typenametemplate我想我做得不对(因为我没有正确理解问题,无法正确解决它)。

非常感激任何的帮助。

谢谢。

PS:我正在使用'g++(GCC)4.2.4(Ubuntu 4.2.4-1ubuntu4)'和'boost-1.42'。

0 投票
1 回答
2504 浏览

c++ - 提升多索引容器的模板参数

我需要创建一个包含多索引容器的通用类作为存储。当我编译时,它给出了如下错误,我定义了第 n 个索引视图。

错误:非模板“nth_index”用作模板

私人的: conn_table_t conn_table_; };

p>

0 投票
1 回答
539 浏览

c++ - boost multi_index 提取的键是否被缓存?

我正在使用 boost::multi_index 和我想根据它的大小索引的数据类型。但是,这种数据类型的 size() 成员函数执行起来很昂贵。multi_index 是否缓存它从其键提取器中获取的值?

例如,如果我创建了一个带有成员函数键 (element.size()) 的有序索引的 multi_index 容器,并插入了一个其大小位于容器中间某处的元素,容器是否会重新调用大小() 在找到正确的插入点之前遍历其内部数据结构时访问的所有元素的成员函数?

0 投票
1 回答
2223 浏览

c++ - 绕过 Boost Multi-Index 容器的常量元素

我有一些复制成本很高的数据类,但必须是可变的,因为它会根据事件频繁更新。我还需要一个多索引容器来容纳许多这样的类。我正在尝试使用 boost::multi_index 进行设置。例如:

我的问题是 multi_index 将容器中的元素视为常量(以保持所有索引的完整性)。例如,以下内容不会编译:

我不能使用该replace()方法,因为复制有效负载类很昂贵。我知道该modify()方法,但使用它似乎很麻烦,因为在我的实际程序中,“有效负载”类可能包含许多字段,并且为每一个都编写一个函子是不可能的。

有什么建议么?

编辑:经过一番玩弄之后,我尝试用 shared_ptr 替换数据元素MutableAndExpensiveToCopy

这行得通,我能够编译我的main()包括数据修改代码:

这几乎给了我想要的东西,但我不确定为什么会这样,所以:

  1. 这段代码是否符合我的预期,还是我遗漏了一些警告?
  2. 这怎么行?shared_ptr 的常量是否不适用于其->运算符?
0 投票
1 回答
346 浏览

c++ - 无法理解 multi_index

如果第一个索引multi_index是正确的:容器内的排序对象引用ZIndex值,我不确定另一个。我需要这样的功能:按 ZIndex 排序,但getCppObject在迭代时返回。是否不仅可以设置排序,还可以在访问时设置结果?

另外,例如,tag_py我想遍历 all getPythonObject,而不是ObjectStorage. 这真的可能multi_index吗?

0 投票
3 回答
168 浏览

visual-studio-2008 - VC++ 和 boost 中的 typedef

我正在学习 boost multiIndex 并且正在关注本教程

问题是我无法使用 Visual Studio 2008 编译散列索引部分(该页面上的第一个代码块)中的代码 :(

每次我尝试时,c++ 编译器都会抱怨:

这些错误发生在上面显示的代码块中第 19 行的 typedef 中。有人可以帮我解释一下吗?