内容提要
2026年第三季度,作者推进Boost.PolyCollection新增无序多态容器,采用hub段实现迭代器和引用稳定性,插入性能相当或更快,但遍历较慢,将随Boost 1.93发布。同时维护Boost.Container、Boost.MultiIndex,并参与Papergate提示词开发及Boost社区支持。
延伸解读
无序多态容器的性能权衡
新增的无序多态容器在插入性能上与有序版本相当甚至更快,但遍历速度明显较慢。这是因为其内部使用基于hub的段,而非vector。这种性能差异意味着它们更适合插入频繁、遍历较少的场景,例如需要长期持有元素引用的容器。
迭代器与引用稳定性的价值
无序多态容器通过hub段实现了迭代器和引用稳定性,即插入或删除元素不会使指向其他元素的迭代器或引用失效。作者认为这一特性在Boost.PolyCollection的目标场景中非常可取,但实际价值仍需时间验证。
内部设计的统一与灵活
Boost.PolyCollection的所有八种容器都是同一个内部类模板的实例化,通过模型参数区分多态类型、有序/无序以及开放/封闭。这种设计使得不同维度的组件可以互操作,结构丰富且灵活。
发布计划与社区维护
无序多态容器将随Boost 1.93发布。作者同时维护Boost.Container和Boost.MultiIndex,并参与Papergate提示词开发及Boost社区支持,包括帮助分类库的维护状态以引导新志愿者。
Q&A
Boost.PolyCollection 新增的无序多态容器是什么?
无序多态容器是 Boost.PolyCollection 新增的一类容器,包括 boost::base_unordered_collection、boost::function_unordered_collection、boost::any_unordered_collection 和 boost::variant_unordered_collection。它们内部使用基于 boost::container::hub 的段,提供迭代器和引用稳定性。
无序多态容器和有序多态容器在性能上有什么差异?
与现有的有序集合相比,无序多态容器的插入性能相当甚至更快,但遍历速度明显更慢,因为有序集合的段基于向量,遍历向量非常高效。
无序多态容器如何实现迭代器和引用稳定性?
无序多态容器内部使用 boost::container::hub 作为段的底层数据结构,hub 提供了迭代器和引用稳定性。
无序多态容器预计何时发布?
无序多态容器将随 Boost 1.93 发布。
Boost.PolyCollection 的内部设计是如何统一管理八种容器的?
所有八种容器都是同一个内部 poly_collection 类模板的实例化,该模板由一个模型参数化,模型编码了运行时多态类型(OOP、函数包装、鸭子类型、类 std::variant)、集合是有序还是无序、以及集合是封闭还是开放。
Papergate 是什么?它的目标是什么?
Papergate 是一个 AI 工具,用于分析任何 WG21 提案是否回答了“为什么值得标准化”这一基本问题。它检查提案是否包含替代方案展示、成本效益分析、参考实现等,目的是帮助人类评审者快速判断提案是否涉及基本问题,而非评估提案本身的价值。