Boost C++ 库

...世界上最受推崇和设计最精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu《C++ 编码标准》

PrevUpHomeNext

设计说明

Boost.Intrusive 在性能敏感环境中的应用
Boost.Intrusive 在空间受限环境中的应用
Boost.Intrusive 作为基本构建块
扩展 Boost.Intrusive

在设计 Boost.Intrusive 时,已考虑以下指导原则

Boost.Intrusive 应该是在性能敏感环境中一个有价值的工具,遵循此指导原则,Boost.Intrusive 被设计为提供众所周知的复杂度保证。除此之外,一些选项,如可选的常数时间,被设计为在一些函数中提供更快的复杂度保证,例如 slist::splice

关联容器的高级查找和插入函数,采用任意键类型和谓词,旨在避免不必要的对象构造。

Boost.Intrusive 应该在空间受限的环境中很有用,并且遵循此指导原则,Boost.Intrusive 将节点算法和侵入式容器分离,以避免为每个用户类型实例化节点算法。例如,将实例化一个红黑算法的类,以使用原始指针实现所有 set 和 multiset 容器。这样,Boost.Intrusive 试图避免与模板相关的任何代码大小开销。

除此之外,Boost.Intrusive 实现了一些大小改进:例如,如果节点是双字节对齐的,则红黑树将颜色位嵌入到父指针的低位中。放弃常数时间大小操作的选项可以减少容器大小,并且当容器为空或包含少量值时,这种额外的大小优化是明显的。

Boost.Intrusive 可以是构建更复杂容器的基本构建块,并且这种潜力促使了许多设计决策。例如,每个用户类型可以有多个钩子的能力为在 Boost.Intrusive 之上实现多索引容器打开了机会。

Boost.Intrusive 容器实现了将函数对象作为参数的高级函数(clone_fromerase_and_disposeinsert_check 等)。当在侵入式容器之上实现非侵入式容器(例如,类似 STL 的容器)时,这些函数非常有用。

Boost.Intrusive 提供了范围广泛的容器,但也允许构建重用 Boost.Intrusive 元素的自定义容器。程序员可能想要直接使用节点算法,或者构建利用应用程序环境的特殊钩子。

例如,程序员可以自定义 Boost.Intrusive 的某些部分,以管理其定义无法更改的旧数据结构。


PrevUpHomeNext