149149Boost被广泛使用的原因如下:
它是开源且经过同行评审。
它提供了一个广泛范围的平台无关功能,这是STL所缺少的。
它是STL的补充而非替代品。
许多Boost开发人员都在C++标准委员会上。实际上,Boost的许多部分被认为将被包含在下一个C++标准库中。
它有很好的文档。
它的许可证允许在开源和闭源项目中包含。
其特性通常不会相互依赖,因此您可以仅链接您需要的部分。[Luc Hermitte的评论]
- blackwing55此外,我们还可以说,Boost 子库可以独立于彼此使用(除了少数核心库)。例如,我们使用 boost.shared_ptr 并不意味着我们必须使用 boost.ublas。 - Luc Hermitte1我喜欢看起来像百科全书条目的答案。这使得获取大量材料变得非常容易。+1 - Tyler Smith1尽管似乎每个库都依赖于MPL... - Viktor SehrBoost允许一次编写,跨平台开发和使用,对吗? - FilBot3商业使用是否免费? - Mayur回答链接4444从主页上可以看到:
“……是世界上最受尊敬和专业设计的C++库项目之一。”
— Herb Sutter和Andrei Alexandrescu,《C++ 编程规范》
“条款55: 熟悉Boost。”
— Scott Meyers,《Effective C++》,第三版。
“大多数程序员的明显解决方案是使用提供所需服务的优雅高效的平台无关库。例子包括BOOST…”
— Bjarne Stroustrup,《C++ 中的抽象、库和效率》
所以,这是一系列被广泛使用和接受的库,但为什么需要它呢?
如果你需要:
正则表达式
函数绑定
lambda函数
单元测试
智能指针
不可复制(noncopyable)、可选(optional)
序列化
通用日期(generic dates)
可移植文件系统(portable filesystem)
环形缓冲区(circular buffers)
配置工具(config utils)
通用图像库(generic image library)
TR1
线程(threads)
uBLAS
以及更多,当你在C++中编码时,看看Boost。
- Sébastien Rocca-Serra回答链接2424由于它们为标准库添加了许多缺失的功能,其中一些功能已被包括在标准库中。
Boost团队并没有说谎:
为什么组织要使用Boost?
一个词:生产力。使用像Boost这样高质量的库可以加速初始开发,减少错误,减少重复劳动,并降低长期维护成本。由于Boost库往往成为事实或法定标准,因此许多程序员已经熟悉它们。
10个Boost库已包含在C++标准库的TR1中,因此计划在以后进行完全标准化。更多的Boost库正在TR2中准备。使用Boost库可以帮助组织在采用新技术方面走在前列。
许多组织已经使用使用Boost编写的程序,例如Adobe Acrobat Reader 7.0。
- Vinko Vrsalovic回答链接1818一些 Boost 类非常有用(如 shared_ptr),但我认为他们在 traits 和 concepts 上有些过度。使用 Boost 时,编译时间和二进制文件大小都会变得非常疯狂,就像任何模板重的代码一样。必须要有一个平衡点,我不确定 Boost 是否已经找到了这个平衡点。
- jeramiah112你忘记了 Boost 不只是一个库而是许多库的集合。此外,你需要将庞大的大小和编译时间与功能抵消。Traits 和 concepts 在开发中非常有帮助。为此付出的编译时间确实是微不足道的代价。 - Konrad Rudolph回答链接99BOOST是一个库的集合,填补了许多C++项目的共同需求。通常,它们优先考虑BOOST实现代码的正确性、可重用性、可移植性、运行时性能和空间效率,而不是可读性或编译时间。它们往往不涵盖完整的高级功能要求(例如应用程序框架),而是提供可以更自由地组合的构建块,而不会支配或主导应用程序设计。
考虑使用BOOST的重要原因包括:
- 大多数库都经过相当充分的测试和设计:它们通常得到一些优秀程序员的合理审查,与在相同问题空间中具有自己解决方案的人相比,得到广泛使用并收集了大量的实际反馈。
- 它已经编写好了,而你的解决方案可能还没有。
- 它非常易于移植(但这取决于每个库)。
- C++社区中的更多人将有一个帮助你编写代码的头脑起点。
- BOOST通常是引入C++标准的试验场,因此您将有更少的工作来重写您的代码以与未来的标准兼容,无需BOOST。
- 由于社区需求,编译器供应商更有可能测试和解决BOOST使用的正确性问题。
- 对boost库的熟悉将有助于您在其他项目中执行类似的工作,可能是在其他公司,在这些项目中,您现在编写的任何代码可能无法重用。
这里简要描述了这些库:http://www.boost.org/doc/libs/。
- Tony Delroy回答链接99它添加了库,使得C++编程更加现代化。
根据我的经验,许多C++程序员实际上是20世纪90年代早期的C++程序员,几乎只写C++类,很少使用泛型。更现代的方法使用泛型以一种更像动态语言的方式组合软件,但最终仍然可以获得类型检查/性能。看起来有点丑陋,但一旦你克服了语法问题,它真的非常好用。Boost为您提供了许多工具,使您轻松组合各种东西,如智能指针、函数、lambda、绑定等。然后还有利用这种更新的C++编写方式提供诸如网络、正则表达式等功能的Boost库。
如果您正在编写大量的for循环,或手动滚动函数对象,或进行内存管理,则一定应该尝试使用boost。
- Keith Nicholas回答链接66由于C++标准库并不是非常完整,因此需要进行补充。
- Hans Sjunnesson回答链接44Boost基本上是标准的概述,除了通过所有对Boost的同行评审和使用,您可以非常确信地获得相当不错的依赖项交易。
然而,大多数商店不使用Boost,因为它是一个外部依赖项。实际上,减少外部依赖项也非常重要。
- Robert Gould回答链接44Boost 对于 C++ 就像 .NET Framework 对于 C# 一样,但可能规模更小。
- macbirdie回答链接44任何与Kevlin Henney有关的事情都应该引起注意。
- Umber Ferrule回答链接