版权所有 © 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
),这些算法具有更高的性能和一个名为类型恢复的特殊功能,该功能允许用户代码提供有关存储元素的具体类型的线索,以便进一步提高与内联和反虚virtual化相关的效率。
![]() |
注意 |
---|---|
Boost.PolyCollection 是一个仅头文件的库。需要 C++11 支持。该库已验证可在 Visual Studio 2015、GCC 4.8 和 Clang 3.5 上工作。 |