使用C ++ Boost库有什么好处?

所以,我一直在阅读,似乎Boost图书馆在实践中使用了很多(不是在我的商店,但是)。 为什么是这样? 是什么让它如此美好?

Boost被广泛使用,因为:

  • 它是开源的和同行评议的。
  • 它提供了STL错过的广泛的平台不可知的function。
  • 它是STL的补充,而不是替代品。
  • 许多Boost开发人员都是C ++标准委员会成员。 事实上,Boost的许多部分被认为是包含在下一个C ++标准库中的。
  • 它很好地logging。
  • 其许可证允许包含在开源和闭源项目中。
  • 它的function通常不依赖于对方,所以你只能链接你需要的部分。 [ Luc Hermitte的评论]

从主页:

“…世界上最受重视和专业devise的C ++图书馆项目之一。” – Herb Sutter和Andrei Alexandrescu,C ++编码标准

“项目55:熟悉Boost。” – Scott Meyers,Effective C ++,3rd Ed。

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

所以,这是一个广泛使用和接受的图书馆的范围,但你为什么需要它?

如果你需要:

  • 正则expression式
  • 函数绑定
  • lambda函数
  • unit testing
  • 聪明的指针
  • 不可复制,可选
  • 系列化
  • 通用date
  • 便携式文件系统
  • 循环缓冲区
  • configuration使用情况
  • 通用图像库
  • TR1
  • 线程
  • 的uBLAS

当你用C ++编写代码的时候,看看Boost 。

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

助人不撒谎:

为什么组织应该使用Boost?

总之,生产力。 使用像Boost这样的高质量图书馆可以加快初始开发速度,减lessbug,减less重新发明,并降低长期维护成本。 而且由于Boost库倾向于成为事实上或法律上的标准,许多程序员已经熟悉它们。

十个Boost库被包含在C ++标准库的TR1中,所以被定为以后的完全标准化。 更多的Boost库正在为TR2准备。 使用Boost库使组织在采用新技术方面领先一步。

许多组织已经使用Boost实现的程序,如Adobe Acrobat Reader 7.0。

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

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

根据我的经验,许多C ++程序员实际上是20世纪90年代早期的C ++程序员,写了很多C ++类,而不是很多generics的使用。 更现代的方法使用generics以更像dynamic语言的方式组合软件,但最终还是会得到types检查/性能。 看看有点难看。 但是,一旦你解决了语法问题,它确实是相当不错的。 Boost为你提供了很多你需要的工具来轻松编写东西。 智能指针,函数,lambdaexpression式,绑定等。然后有提升库,利用这种新的方式编写C ++提供networking,正则expression式等等的东西…

如果你正在写很多for循环,或者手动滚动函数对象,或者做内存pipe理,那么你一定要检查boost。

BOOST是许多C ++项目共同需要的库的集合。 一般来说,他们的优先级是正确性,可重用性,可移植性,运行时性能,空间效率优于BOOST实现代码的可读性,有时甚至是编译时间。 它们倾向于不覆盖完整的高级function需求(例如应用程序框架),相反(幸好)提供的构build块可以更自由地组合,而不需要指定或主导应用程序devise。

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

  • 大多数的图书馆都经过了相当好的testing和devise:与一些优秀的程序员相比,他们通常能得到相当完善的评价,而在同样的问题空间中,与自制解决scheme的人相比,它们广泛用于收集广泛的真实世界的反馈
  • 它已经写好了,你的解决scheme可能不是
  • 这是相当便携式(但每个库有所不同)
  • C ++社区中的更多人将会帮助您处理代码
  • BOOST通常是引入C ++标准的一个试验场,所以在重写你的代码时要做的更less,以适应未来的标准sans BOOST
  • 由于社区需求,编译器供应商更可能testingBOOST使用的正确性问题并作出反应
  • 熟悉boost库会帮助你在其他项目上做类似的工作,可能在其他公司里,现在可能编写的任何代码可能无法用于重用

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

因为C ++标准库并不完整

任何与凯夫琳亨尼的参与应该注意到。

基本上提升了标准的概要,除了Boost得到的所有同行评审和使用,你可以确信你的依赖性得到了很大的提高。

然而,大多数商店不使用Boost,因为它具有外部依赖性。 而实际上减less外部依赖也是非常重要的。

Boost是C ++,就像.NET Framework是C#一样,但可能规模较小。

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