Boost C++ 库

...世界上最受推崇和设计最精湛的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, 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 一致性
移动和就地构造
有状态分配器
作用域分配器
关联容器中的插入提示以及为具有等效键的元素保留插入顺序
初始化列表
空前向迭代器
多态内存资源
forward_list<T>
vector vs. std::vector 异常保证
可以更改的常量引用参数
vector<bool> 特化
使用 std::memset 的非标准值初始化
已知问题
C++03 编译器中的移动模拟限制
历史和使用 Boost.Container 的原因
Boost.Container 历史
为什么选择 Boost.Container?
索引
类索引
类型定义索引
函数索引
Boost.Container 头文件参考
Header <boost/container/adaptive_pool.hpp>
Header <boost/container/allocator.hpp>
Header <boost/container/allocator_traits.hpp>
Header <boost/container/container_fwd.hpp>
Header <boost/container/deque.hpp>
Header <boost/container/pmr/deque.hpp>
Header <boost/container/devector.hpp>
Header <boost/container/pmr/devector.hpp>
Header <boost/container/flat_map.hpp>
Header <boost/container/pmr/flat_map.hpp>
Header <boost/container/flat_set.hpp>
Header <boost/container/pmr/flat_set.hpp>
Header <boost/container/list.hpp>
Header <boost/container/pmr/list.hpp>
Header <boost/container/map.hpp>
Header <boost/container/pmr/map.hpp>
Header <boost/container/new_allocator.hpp>
Header <boost/container/node_allocator.hpp>
Header <boost/container/node_handle.hpp>
Header <boost/container/options.hpp>
Header <boost/container/pmr/global_resource.hpp>
Header <boost/container/pmr/memory_resource.hpp>
Header <boost/container/pmr/monotonic_buffer_resource.hpp>
Header <boost/container/pmr/polymorphic_allocator.hpp>
Header <boost/container/pmr/pool_options.hpp>
Header <boost/container/pmr/resource_adaptor.hpp>
Header <boost/container/pmr/synchronized_pool_resource.hpp>
Header <boost/container/pmr/unsynchronized_pool_resource.hpp>
Header <boost/container/scoped_allocator.hpp>
Header <boost/container/scoped_allocator_fwd.hpp>
Header <boost/container/pmr/set.hpp>
Header <boost/container/set.hpp>
Header <boost/container/pmr/slist.hpp>
Header <boost/container/slist.hpp>
Header <boost/container/pmr/small_vector.hpp>
Header <boost/container/small_vector.hpp>
Header <boost/container/pmr/stable_vector.hpp>
Header <boost/container/stable_vector.hpp>
Header <boost/container/static_vector.hpp>
Header <boost/container/pmr/string.hpp>
Header <boost/container/string.hpp>
Header <boost/container/throw_exception.hpp>
Header <boost/container/uses_allocator.hpp>
Header <boost/container/uses_allocator_fwd.hpp>
Header <boost/container/pmr/vector.hpp>
Header <boost/container/vector.hpp>
致谢、注释和链接
发行说明
Boost 1.87 Release
Boost 1.86 Release
Boost 1.85 Release
Boost 1.83 Release
Boost 1.82 Release
Boost 1.81 Release
Boost 1.80 Release
Boost 1.79 Release
Boost 1.78 Release
Boost 1.77 Release
Boost 1.76 Release
Boost 1.75 Release
Boost 1.74 Release
Boost 1.72 Release
Boost 1.71 Release
Boost 1.70 Release
Boost 1.69 Release
Boost 1.68 Release
Boost 1.67 Release
Boost 1.66 Release
Boost 1.65 Release
Boost 1.64 Release
Boost 1.63 Release
Boost 1.62 Release
Boost 1.61 Release
Boost 1.60 Release
Boost 1.59 Release
Boost 1.58 Release
Boost 1.57 Release
Boost 1.56 Release
Boost 1.55 Release
Boost 1.54 Release
Boost 1.53 Release
Boost 1.52 Release
Boost 1.51 Release
Boost 1.50 Release
Boost 1.49 Release
Boost 1.48 Release

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

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

  • 实现了就地构造和移动语义,包括对 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