Boost C++ 库

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

Boost.Container 的历史与使用原因 - Boost C++ 函数库
PrevUpHomeNext

Boost.Container 是一个漫长开发过程的产物,其起源可以追溯到 2004 年的实验性 Shmem 库,该库开创了在共享内存中使用标准容器的先河。Shmem 包含修改过的 SGI STL 容器代码,经过调整以支持非原始 allocator::pointer 类型和有状态的分配器。在审查后,Shmem 被接受为 Boost.Interprocess,该库继续对这些容器进行改进和优化。

2007 年,节点容器(maplistslist)中的容器代码被重写、重构和扩展,以构建内联容器库 Boost.IntrusiveBoost.Interprocess 容器被重构以利用 Boost.Intrusive 容器,并最大限度地减少了代码重复。这两个库多年来一直获得支持和错误修复。它们引入了移动语义、原地插入以及尚未发布的 C++0x 标准的更多功能。

Boost.Interprocess 容器始终符合标准,并且这些容器以及像 stable_vectorflat_[multi]set/map 这样的新容器在 Boost.Interprocess 之外也得到了成功应用。随着容器足够成熟,可以拥有自己的库,因此很自然地将这些容器收集起来,构建 Boost.Container,一个面向更广泛受众的库。

市面上已经有很多高质量的标准库实现,为什么还要使用 Boost.Container 呢?原因有几个:

  • 即使您使用的是早期符合标准标准的编译器,您仍然可以访问许多最新的 C++ 标准功能,并在更换编译器时轻松迁移代码。
  • 它与 Boost.Interprocess 共享内存分配器兼容。
  • 您拥有极其有用新容器,例如 [stable/static/small]_vectorflat_[multi]set/map
  • 如果您在多个平台上工作,您将获得可移植的行为,而无需依赖各平台对 std-lib 实现的遵从性。一些示例:
    • 默认构造函数根本不分配内存,这可以提高性能,并且通常意味着无异常保证(如果谓词或分配器的默认构造函数不抛出异常)。
    • basic_string 进行的小字符串优化。
  • 基于用户反馈的 扩展功能,以提高代码性能。
  • 您需要一个可移植的实现,该实现可以在禁用异常支持的情况下进行编译,或者您需要在容器需要指示异常错误时自定义错误处理。

PrevUpHomeNext