Boost C++ 库

...世界上最受推崇和设计最精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

版本 1.35.0

版本 1.35.0

2008年3月29日 12:00 GMT

文档

下载
平台文件
unixboost_1_35_0.tar.bz2
boost_1_35_0.tar.gz
windowsboost_1_35_0.7z
boost_1_35_0.zip

新库

  • Asio: 可移植的网络库,包括套接字、定时器、主机名解析和套接字 iostream,来自 Chris Kohlhoff。
  • Bimap: Boost.Bimap 是一个 C++ 的双向映射库。使用 Boost.Bimap,您可以创建关联容器,其中两种类型都可以用作键,来自 Matias Capeletto。
  • Circular Buffer: 符合 STL 标准的容器,也称为环形或循环缓冲区,来自 Jan Gaspar。
  • Function Types: Boost.FunctionTypes 提供了对函数、函数指针、函数引用和成员指针类型进行分类、分解和合成的功能。来自 Tobias Schwinger。
  • Fusion: 用于处理元组的库,包括各种容器、算法等。来自 Joel de Guzman、Dan Marsden 和 Tobias Schwinger。
  • GIL: 通用图像库,来自 Lubomir Bourdev 和 Hailin Jin。
  • Interprocess: 共享内存、内存映射文件、进程共享互斥锁、条件变量、容器和分配器,来自 Ion Gaztañaga。
  • Intrusive: 侵入式容器和算法,来自 Ion Gaztañaga。
  • Math/特殊函数: 来自 John Maddock、Paul Bristow、Hubert Holin 和 Xiaogang Zhang 的各种数学特殊函数。
  • Math/统计分布: 来自 John Maddock 和 Paul Bristow 的各种单变量统计分布和对其进行操作的函数
  • MPI: 消息传递接口库,用于分布式内存并行应用程序编程,来自 Douglas Gregor 和 Matthias Troyer。
  • System: 操作系统支持,包括将成为 C++0x 标准库一部分的诊断支持,来自 Beman Dawes。

更新的库

  • Graph: 通用图组件和算法。亮点
    • kolmogorov_max_flow,来自 Stephan Diederich,作为 2006 年 Google 编程之夏的一部分。
    • read_dimacs_max_flowwrite_dimacs_max_flow 用于最大流问题,来自 Stephan Diederich。
    • read_graphmlwrite_graphml 用于 GraphML 输入/输出,来自 Tiago de Paula Peixoto。
    • minimum_cycle_ratiomaximum_cycle_ratio,来自 Dmitry Bufistov 和 Andrey Parfenov。
    • boyer_myrvold_planarity_test,以及一套用于平面图的算法,来自 Aaron Windsor。
    • LEDA 适配器改进,来自 Jens Müller。
  • Hash: TR1 哈希函数对象,来自 Daniel James。亮点
    • 支持 long long, std::complex
    • 改进了浮点数哈希的算法。
    • 一些错误和警告修复。
  • Iostreams: 用于定义流、流缓冲区和 i/o 过滤器的框架,来自 Jonathan Turkanis。亮点
    • 澄清了 close() 的语义。这修复了一些错误,但会破坏一些现有代码。有关详细信息,请参阅 发行说明
    • 许多其他错误修复和优化。
  • 多维数组:
    • 为 MultiArray 概念添加了 “维度” 编译时常量。
    • 为了更好地控制错误情况,C++ assert 的使用已替换为 BOOST_ASSERT。
    • 修复了同时调整大小和重新索引的错误。
  • 多索引容器:
  • Serialization: Boost.Serialization 已更新,针对密集数组进行了优化。
  • 线程:
    • 线程库已更新,以更符合 C++0x 工作草案。
    • boost::thread 和各种锁类型的实例现在是可移动的。
    • 线程可以在中断点处被中断。
    • 条件变量现在可以与任何实现 Lockable 概念的类型一起使用,通过使用 boost::condition_variable_any (boost::conditionboost::condition_variable_any 的 typedef,为了向后兼容而提供)。boost::condition_variable 作为一种优化提供,并且仅适用于 boost::unique_lock<boost::mutex> (boost::mutex::scoped_lock)。
    • 线程 ID 与 boost::thread 分离,因此线程可以获取自己的 ID(使用 boost::this_thread::get_id()),并且 ID 可以用作关联容器中的键,因为它们具有完整的比较运算符集。
    • 超时现在使用 Boost DateTime 库实现,通过 boost::system_time 的 typedef 用于绝对超时,并在许多情况下支持相对超时。boost::xtime 仅为了向后兼容而支持。
    • 锁实现为公开可访问的模板 boost::lock_guard, boost::unique_lock, boost::shared_lock, 和 boost::upgrade_lock,它们在互斥锁的类型上进行模板化。Lockable 概念已扩展为包括公开可用的 lock()unlock() 成员函数,这些函数由锁类型使用。
    • boost::try_mutex 已被删除,并且该功能已并入 boost::mutexboost::try_mutex 作为 typedef 保留,但不再是单独的类。
    • boost::recursive_try_mutex 已被删除,并且该功能已并入 boost::recursive_mutexboost::recursive_try_mutex 作为 typedef 保留,但不再是单独的类。
    • boost::detail::thread::lock_ops 已被删除。依赖于 lock_ops 实现细节的代码将不再起作用,因为这已被删除,因为它不再必要,因为互斥锁类型现在具有公共的 lock()unlock() 成员函数。
    • 不再提供具有 bool 类型第二个参数的 scoped_lock 构造函数。在之前的 boost 版本中,boost::mutex::scoped_lock some_lock(some_mutex,false); 可以用于创建一个与互斥锁关联但不立即锁定的锁对象。此功能现在已被采用 boost::defer_lock_type 作为第二个参数的构造函数取代:boost::mutex::scoped_lock some_lock(some_mutex,boost::defer_lock);
    • 损坏的 boost::read_write_mutex 已被 boost::shared_mutex 取代。
  • Wave: 标准一致的 C99/C++ 预处理器功能的实现,封装在一个易于使用的迭代器接口后面,来自 Hartmut Kaiser。亮点
    • 添加了在发生错误后继续预处理的可能性。
    • 将宏自省 API 添加到 wave::context 对象。
    • 为库添加了线程支持。
    • 将整体性能提高了高达 30%。
    • 更改并统一了预处理器钩子接口(这是一个接口破坏性更改!),添加了几个新的预处理器钩子函数。
    • 添加了序列化支持。
    • 添加了新示例(例如:Hannibal - 一个部分 C++ 解析器,由 Danny Havenith 编写)。
    • 添加了基于 Ben Hansons Lexertl 库的新词法分析器。
    • 修复了大量其他错误和问题。
  • Xpressive: 可以编写为字符串或表达式模板的正则表达式,并且可以相互递归引用,具有上下文无关文法的强大功能,来自 Eric Niebler。亮点
    • 为静态正则表达式添加了语义动作。语义动作是在正则表达式的一部分匹配时执行的代码。
    • 为静态正则表达式添加了自定义断言。自定义断言是可以参与正则表达式匹配的布尔谓词。
    • 为将静态或动态正则表达式嵌入到动态正则表达式中添加了命名正则表达式。这可以用于创建动态正则表达式语法。
    • 为动态正则表达式添加了命名捕获,类似于 Perl。

支持的编译器

此版本中正式支持以下编译器

  • HP-UX 上的 HP aC++ A.06.14
  • Darwin GCC 4.01。
  • GNU GCC 高达 4.2.1 版本,在 Linux 和 Solaris 上。
  • Linux 上的 Intel C++ 9.1。
  • Windows 上的 Intel C++ 10.1。
  • Windows 上的 Microsoft Visual C++ 7.1 和 8 (Visual Studio .NET 2003 和 2005)。

此外,以下编译器应该得到良好支持,但不是我们 1.35 版本的发布标准的一部分

  • AIX 上的 IBM Visual Age 9.0。
  • Linux 上的 Intel C++ 10 及更高版本。
  • Linux 和 Solaris 上的 GNU GCC 4.3 及更高版本。
  • Microsoft Visual C++ 9 (Visual Studio .NET 2008)。

致谢

Beman Dawes 管理了此版本。