Boost C++ 库

世界上备受推崇、设计精湛的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ Coding Standards

第 7 章 Boost.Container - Boost C++ 函数库
PrevUpHomeNext

第 7 章 Boost.Container

Ion Gaztanaga

根据 Boost 软件许可证版本 1.0 发布。(参见随附文件 LICENSE_1_0.txt 或在 https://boost.ac.cn/LICENSE_1_0.txt 复制)

目录

介绍
构建 Boost.Container
测试的编译器
主要特性
高效插入
不完整类型的容器
SCARY 迭代器
其他功能
Boost.Container 与 C++ 异常
非标准容器
stable_vector
flat_(multi)map/set 关联容器
devector
slist
static_vector
small_vector
扩展功能:基本扩展
类似 vector 的容器的默认初始化
关联容器的有序范围插入(ordered_unique_rangeordered_range
(s)list 的常数时间范围拼接
扩展功能:可配置容器
可配置的基于树的关联有序容器
可配置的 vector
可配置的 static vector
可配置的 small vector
可配置的 deque
可配置的 devector
扩展功能:扩展分配器
C++11/C++14/C++17 符合性
移动和 emplace
有状态分配器
作用域分配器
关联容器中的插入提示以及保留具有等效键的元素的插入顺序
初始化列表
Null Forward Iterators
多态内存资源
forward_list<T>
vectorstd::vector 的异常保证
可以通过 const 引用传递但可以更改的参数
vector<bool> 特化
使用 std::memset 进行非标准值初始化
已知问题
C++03 编译器中的移动模拟限制
Boost.Container 的历史与使用原因
Boost.Container 历史
为什么选择 Boost.Container?
索引
类索引
类型定义索引
函数索引
Boost.Container 头文件参考
头文件 <boost/container/adaptive_pool.hpp>
头文件 <boost/container/allocator.hpp>
头文件 <boost/container/allocator_traits.hpp>
头文件 <boost/container/container_fwd.hpp>
头文件 <boost/container/deque.hpp>
头文件 <boost/container/pmr/deque.hpp>
头文件 <boost/container/devector.hpp>
头文件 <boost/container/pmr/devector.hpp>
头文件 <boost/container/flat_map.hpp>
头文件 <boost/container/pmr/flat_map.hpp>
头文件 <boost/container/flat_set.hpp>
头文件 <boost/container/pmr/flat_set.hpp>
头文件 <boost/container/list.hpp>
头文件 <boost/container/pmr/list.hpp>
头文件 <boost/container/map.hpp>
头文件 <boost/container/pmr/map.hpp>
头文件 <boost/container/new_allocator.hpp>
头文件 <boost/container/node_allocator.hpp>
头文件 <boost/container/node_handle.hpp>
头文件 <boost/container/options.hpp>
头文件 <boost/container/pmr/global_resource.hpp>
头文件 <boost/container/pmr/memory_resource.hpp>
头文件 <boost/container/pmr/monotonic_buffer_resource.hpp>
头文件 <boost/container/pmr/polymorphic_allocator.hpp>
头文件 <boost/container/pmr/pool_options.hpp>
头文件 <boost/container/pmr/resource_adaptor.hpp>
头文件 <boost/container/pmr/synchronized_pool_resource.hpp>
头文件 <boost/container/pmr/unsynchronized_pool_resource.hpp>
头文件 <boost/container/scoped_allocator.hpp>
头文件 <boost/container/scoped_allocator_fwd.hpp>
头文件 <boost/container/pmr/set.hpp>
头文件 <boost/container/set.hpp>
头文件 <boost/container/pmr/slist.hpp>
头文件 <boost/container/slist.hpp>
头文件 <boost/container/pmr/small_vector.hpp>
头文件 <boost/container/small_vector.hpp>
头文件 <boost/container/pmr/stable_vector.hpp>
头文件 <boost/container/stable_vector.hpp>
头文件 <boost/container/static_vector.hpp>
头文件 <boost/container/pmr/string.hpp>
头文件 <boost/container/string.hpp>
头文件 <boost/container/throw_exception.hpp>
头文件 <boost/container/uses_allocator.hpp>
头文件 <boost/container/uses_allocator_fwd.hpp>
头文件 <boost/container/pmr/vector.hpp>
头文件 <boost/container/vector.hpp>
致谢、说明和链接
发布说明
Boost 1.89 Release
Boost 1.88 发行版
Boost 1.87 发布
Boost 1.86 发布
Boost 1.85 发布
Boost 1.83 发布
Boost 1.82 发布
Boost 1.81 Release
Boost 1.80 发布
Boost 1.79 发布
Boost 1.78 发布
Boost 1.77 发布
Boost 1.76 版本
Boost 1.75 发布
Boost 1.74 发布
Boost 1.72 发布
Boost 1.71 发布
Boost 1.70 发布
Boost 1.69 发布
Boost 1.68 发布
Boost 1.67 发布
Boost 1.66 发布
Boost 1.65 发布
Boost 1.64 发布
Boost 1.63 Release
Boost 1.62 版本
Boost 1.61 发布
Boost 1.60 发布
Boost 1.59 发布
Boost 1.58 发布
Boost 1.57 发布
Boost 1.56 发布
Boost 1.55 发布
Boost 1.54 Release
Boost 1.53 发布
Boost 1.52 发布
Boost 1.51 发布
Boost 1.50 发布
Boost 1.49 发布
Boost 1.48 发布

Boost.Container 库实现了多个知名容器,包括 STL 容器。该库的目的是提供标准容器中没有的高级功能,或者为不符合最新 C++ 标准的编译器提供最新的标准草案功能。

简而言之,Boost.Container 提供了什么?

  • 实现了 Emplace 和移动语义,包括对 C++11 之前的编译器的模拟。
  • 多态分配器和内存资源,包括对 C++17 之前的编译器的实现和模拟。
  • 新的高级功能(例如递归容器)和容器的配置选项 container.configurable_containers
  • 容器支持有状态分配器,并与 Boost.Interprocess 兼容(它们可以安全地放置在共享内存中)。
  • 用户可以在所有平台上获得更一致的性能,包括 SCARY 迭代器
  • 该库提供了新的实用容器。
    • flat_mapflat_setflat_multimapflat_multiset:标准关联容器的直接替换,但更节省内存且搜索速度更快。
    • stable_vector:std::list 和 std::vector 的混合容器:类似 vector 的随机访问迭代器,以及类似 list 的插入和删除迭代器稳定性。
    • static_vector:一种类似 vector 的容器,它在内部嵌入(静态分配)高达最大容量所需的所有内存。最大容量不能增加,并且在编译时指定。
    • small_vector:一种类似 vector 的容器,它在内部嵌入(静态分配)最少量的内存,但在容量需要增加时动态分配元素。此最小容量在编译时指定。
    • devector:是标准 vector 和 deque 容器的混合体。它在前端和后端都提供廉价(摊销常数时间)的插入。
    • slist:经典的预标准单链表实现,提供常数时间的 size()。请注意,C++11 的 forward_list 没有 size()

无需编译 Boost.Container,因为它是一个仅头文件库,只需将 Boost 头文件目录添加到编译器的包含路径中,除非您使用

这些例外情况被实现为一个单独编译的库,因此在这种情况下,您必须将二进制文件安装在链接器可以找到的位置。如果您遵循 Boost 入门 说明,那么您已经完成了。

Boost.Container 需要良好的 C++03 兼容性。已知可用的编译器有:

  • Visual C++ >= 10.0
  • GCC >= 4.8

PrevUpHomeNext