使用 C + + Boost 库的优点是什么?

因此,我一直在阅读,似乎 Boost 库在实践中得到了很多使用(尽管不是在我的工作室)。为什么会这样?是什么让它如此美妙?

82744 次浏览

我稍微使用了一下文件系统库,然后升级: : share _ ptr 非常漂亮。我听说它还有其他功能。

因为 C++标准程式库并不全是 abc 0。

Boost 被广泛使用是因为:

从根本上提高标准将成为什么的概要,除了所有的同行审查和使用,Boost 得到你可以非常肯定你得到了相当不错的交易为您的依赖。

然而,大多数商店不使用 Boost,因为它是一个外部依赖项。实际上,减少外部依赖性也非常重要。

它添加了允许使用更现代方法进行 C + + 编程的库。

根据我的经验,许多 C + + 程序员实际上是上世纪90年代早期的 C + + 程序员,他们基本上都在编写 C + + 类,没有大量使用泛型。更现代的方法使用泛型以更像动态语言的方式组合软件,但最终仍然可以得到类型检查/性能。看起来有点丑。但是一旦你克服了语法问题,它真的很不错。Boost 提供了许多工具,可以帮助您轻松地组合东西。智能指针、函数、 lambdas、绑定等。然后还有一些提升库,它们利用这种编写 C + + 的新方法来提供网络、正则表达式等功能。.

如果您正在编写大量的 for 循环,或者手动滚动函数对象,或者进行内存管理,那么您肯定应该检查 Boost out。

Boost 对 C + + 的意义有点像.NET Framework 对 C # 的意义,但也许是在一个更小的范围内。

一些 Boost 类非常有用(share _ ptr) ,但是我认为它们在 Boost 中使用了一些特性和概念。编译时间和庞大的二进制大小对于 Boost 来说是完全疯狂的,任何模板繁多的代码都是如此。必须要有一个平衡。我不确定 Boost 是否找到了。

任何与 Kevlin Henney有关的事情都应该注意。

首页:

“ ... 世界上最受推崇和设计最专业的 C + + 库项目之一。” ー香草 Andrei Alexandrescu,C + + 编码标准

“第55项: 熟悉自我提升” 斯科特 · 迈耶斯,高效 C + + ,第三版。

“对于大多数程序员来说,显而易见的解决方案是使用一个库,它提供一个独立于所需服务的优雅而高效的平台。例子就是提升... ...” ーー C + + 中的比雅尼·斯特劳斯特鲁普、抽象、库和效率

因此,它是一系列广泛使用和接受的库,但是为什么需要它呢?

如有需要:

  • 正则表达式
  • 函数绑定函数绑定
  • Lambda 函数
  • 单元测试
  • 聪明的指点
  • 不可复制,可选
  • 序列化
  • 通用日期
  • 便携式文件系统便携式文件系统
  • 循环缓冲器循环缓冲器
  • 配置实用程序
  • 通用图像库通用图像库
  • TR1
  • 丝线
  • 阿布拉斯

当你用 C + + 编写代码时,看看 加油

BOOST 是许多 C + + 项目共同需要的库填充集合。一般来说,他们优先考虑的是正确性、可重用性、可移植性、运行时性能和空间效率,而不是 BOOST 实现代码的可读性,有时候也会优先考虑编译时间。它们往往不覆盖完整的高级功能需求(例如应用程序框架) ,而是(谢天谢地)提供可以更自由组合的构建块,而不需要规定或主导应用程序设计。

考虑使用 BOOST 的重要原因包括:

  • 大多数库都经过了良好的测试和设计: 它们通常会得到一些优秀程序员的合理合理的评价,相比之下,在同样的问题空间中使用自制解决方案的人们,它们被广泛使用,足以收集广泛的现实世界反馈
  • 它已经写好了,而你的解决方案可能还没有写好
  • 它非常便携(但是每个库的情况不同)
  • 更多的 C + + 社区的人会在帮助您编写代码方面抢占先机
  • BOOST 通常是介绍 C + + 标准的一个试验场,因此在重写代码以便与未来的标准兼容方面,没有 BOOST 的话,您需要做的工作会更少
  • 由于社区的需求,编译器供应商更有可能使用 BOOST 来测试和响应正确性问题
  • 熟悉 Boost 库将有助于您在其他项目上进行类似的工作,可能是在其他公司,您现在可能编写的任何代码都可能无法重用

这些库在这里用一两行描述: http://www.boost.org/doc/libs/