版权所有 © 2016-2025 Joaquín M López Muñoz
根据 Boost 软件许可证版本 1.0 发布。(参见随附文件 LICENSE_1_0.txt 或在 https://boost.ac.cn/LICENSE_1_0.txt 复制)
目录
"boost/poly_collection/exception.hpp"
概要"boost/poly_collection/base_collection_fwd.hpp"
概要"boost/poly_collection/base_collection.hpp"
概要"boost/poly_collection/function_collection_fwd.hpp"
概要"boost/poly_collection/function_collection.hpp"
概要"boost/poly_collection/any_collection_fwd.hpp"
概要"boost/poly_collection/any_collection.hpp"
概要"boost/poly_collection/variant_collection_fwd.hpp"
概要"boost/poly_collection/variant_collection.hpp"
概要"boost/poly_collection/algorithm.hpp"
概要C++ 中的动态多态要求对象(例如,从抽象基类派生的类的实例)必须通过间接指针进行访问,因为它们实际的类型和大小在使用点是未知的。因此,常规容器不能直接存储多态对象:通常的解决方法是使用指向堆分配元素的指针的容器。在现代计算机体系结构中,这种模式会产生两种类型的低效率:
当特定遍历顺序与用户应用程序无关时,Boost.PolyCollection 提供了一种替代数据结构,该结构可以恢复内存的连续性,并根据具体类型打包元素。提供了四种容器类模板:
boost::base_collection
boost::function_collection
boost::any_collection
boost::variant_collection
分别处理 C++ 中四种不同类型的动态多态:
std::function
的函数包装。std::variant
。这些容器的接口与标准容器非常相似。此外,该库还提供了许多标准库算法(包括 std::for_each
)的改进版本,具有更高的性能,以及一项称为类型恢复的特殊功能,该功能允许用户代码提供有关存储元素的具体类型的线索,以便进一步提高内联和虚函数消除相关的效率。
![]() |
注意 |
---|---|
Boost.PolyCollection 是一个仅限头的库。需要 C++11 支持。该库已验证可与 Visual Studio 2015、GCC 4.8 和 Clang 3.5 配合使用。 |