133

所以,我一直在通读,似乎 Boost 库在实践中得到了很多使用(虽然不是在我的商店)。为什么是这样?是什么让它如此美妙?

4

11 回答 11

143

Boost被广泛使用是因为:

  • 它是开源的并经过同行评审。
  • 它提供了STL 错过的广泛的平台无关功能。
  • 它是对 STL 的补充而不是替代。
  • 许多 Boost 开发人员都是 C++ 标准委员会的成员。事实上,Boost 的很多部分都被认为包含在下一个 C++ 标准库中。
  • 它记录得很好。
  • 它的许可证允许包含在开源和闭源项目中。
  • 它的功能通常不相互依赖,因此您可以只链接您需要的部分。[卢克·赫米特的评论]
于 2008-09-24T05:48:59.980 回答
41

从主页:

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

“第55条:熟悉Boost。” — Scott Meyers,Effective C++,第 3 版。

“对于大多数程序员来说,显而易见的解决方案是使用一个库,该库提供一个优雅而高效的平台,独立于所需的服务。例如 BOOST……” — Bjarne Stroustrup,C++ 中的抽象、库和效率

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

如果你需要:

  • 正则表达式
  • 函数绑定
  • 拉姆达函数
  • 单元测试
  • 智能指针
  • 不可复制,可选
  • 序列化
  • 通用日期
  • 可移植文件系统
  • 循环缓冲区
  • 配置工具
  • 通用图像库
  • TR1
  • 线程
  • uBLAS

当您使用 C++ 编写代码时,请查看Boost以及更多内容。

于 2008-09-24T07:54:57.417 回答
23

因为他们在标准库中添加了许多缺失的东西,所以其中一些被包含在标准中。

Boost人没有说谎:

为什么组织应该使用 Boost?

一句话,生产力。使用像 Boost 这样的高质量库可以加速初始开发,减少错误,减少轮子的重新发明,并降低长期维护成本。而且由于 Boost 库倾向于成为事实上或法律上的标准,许多程序员已经熟悉它们。

C++ 标准库的 TR1 中包含 10 个 Boost 库,因此计划在以后进行完全标准化。更多 Boost 库正在为 TR2 准备中。使用 Boost 库可以让组织在采用新技术方面处于领先地位。

许多组织已经使用通过 Boost 实现的程序,例如 Adob​​e Acrobat Reader 7.0。

于 2008-09-24T05:43:08.403 回答
18

一些 Boost 类非常有用(shared_ptr),但我认为它们对 Boost 中的特征和概念有点疯狂。编译时间和巨大的二进制大小对于 Boost 来说是完全疯狂的,就像任何模板繁重的代码一样。必须有一个平衡。我不确定Boost是否找到了它。

于 2008-09-24T06:59:36.253 回答
9

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

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

  • 大多数库都经过了很好的测试和设计:与在同一问题空间中具有自制解决方案的人相比,它们通常得到一些优秀程序员的合理评价,并且广泛用于收集广泛的实际反馈
  • 它已经写好了,你的解决方案可能不是
  • 它非常便携(但每个库都不同)
  • C++ 社区中的更多人将在帮助您编写代码方面处于领先地位
  • BOOST 通常是引入 C++ 标准的试验场,因此您在重写代码以与未来标准兼容时无需 BOOST 即可完成更少的工作
  • 由于社区需求,编译器供应商更有可能使用 BOOST 测试和应对正确性问题
  • 熟悉 boost 库将帮助您在其他项目中做类似的工作,可能在其他公司,您现在可能编写的任何代码都可能无法重用

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

于 2011-01-21T05:02:48.640 回答
8

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

根据我的经验,许多 C++ 程序员实际上是 1990 年代早期的 C++ 程序员,他们几乎都在编写 C++ 类,而不是大量使用泛型。更现代的方法使用泛型以更像动态语言的方式组合软件,但最终您仍然可以获得类型检查/性能。看起来有点难看。但是一旦你克服了语法问题,它真的很不错。Boost 为您提供了许多轻松编写内容所需的工具。智能指针、函数、lambdas、绑定等。然后是 boost 库,它们利用这种新的 C++ 编写方式来提供诸如网络、正则表达式等之类的东西......

如果您正在编写大量 for 循环、手动滚动函数对象或进行内存管理,那么您绝对应该检查 boost。

于 2008-09-24T06:39:16.863 回答
6

因为 C++ 标准库并不是那么完整

于 2008-09-24T05:38:38.150 回答
4

应注意任何与Kevlin Henney相关的事情。

于 2008-09-24T07:46:15.423 回答
3

Boost 基本上是标准将成为什么的概要,除了 Boost 获得的所有同行评审和使用,您可以非常确定您的依赖项获得了相当大的收益。

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

于 2008-09-24T06:17:43.517 回答
3

Boost 之于 C++ 有点像 .NET Framework 之于 C#,但规模可能更小。

于 2008-09-24T06:56:22.907 回答
2

我使用文件系统库退出了一点,boost::shared_ptr 非常漂亮。我听说它也做其他事情。

于 2008-09-24T05:37:10.367 回答