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

时间:2008-09-24 05:35:24

标签: c++ boost

所以,我一直在阅读,看起来Boost库在实践中得到了很多使用(不过在我的店里)。为什么是这样?是什么让它如此美妙?

11 个答案:

答案 0 :(得分:122)

Boost被广泛使用,因为:

  • 它是开源和同行评审的。
  • 它提供了wide range与STL错过的平台无关的功能。
  • 它是对STL的补充,而不是替代。
  • 许多Boost开发人员都在C ++标准委员会。事实上,Boost的许多部分被认为包含在下一个C ++标准库中。
  • 很好地记录了。
  • license允许包含在开源和闭源项目中。
  • 其功能通常彼此依赖,因此您只能链接所需的部分。 [Luc Hermitte的评论]

答案 1 :(得分:36)

从主页:

  

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

     

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

     

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

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

如果您需要:

  • 正则表达式
  • 功能绑定
  • lambda functions
  • 单元测试
  • 智能指针
  • noncopyable,optional
  • 序列
  • 通用日期
  • 便携式文件系统
  • 循环缓冲区
  • config utils
  • 通用图片库
  • TR1
  • 线程
  • uBLAS库
使用C ++进行编码时,

more,请查看Boost

答案 2 :(得分:23)

因为他们在标准库中添加了许多缺失的内容,所以其中一些内容已经包含在标准库中。

Boost people没有撒谎:

  

组织为什么要使用Boost?

     

总之,生产力。用于   像Boost这样的高质量图书馆   加速初步开发,结果   减少错误,减少   重新发明,削减   长期维护费用。从那以后   Boost库往往成为de   事实上或法律上的标准,很多   程序员已经熟悉了   它们。

     

十个Boost库是   包含在C ++标准库中   TR1,等等以后会全部完成   标准化。更多Boost库   TR2正在筹备中。运用   Boost库为组织提供了支持   采用新的先机   技术。

     

许多组织已经使用了程序   与Adobe一样使用Boost实现   Acrobat Reader 7.0。

答案 3 :(得分:14)

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

答案 4 :(得分:8)

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

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

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

答案 5 :(得分:8)

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

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

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

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

答案 6 :(得分:6)

因为C ++标准库并非完全完成

答案 7 :(得分:5)

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

答案 8 :(得分:3)

基本上提升标准将成为什么,除了Boost获得的所有同行评审和使用之外,你可以非常确定你的依赖关系会得到很多好处。

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

答案 9 :(得分:3)

Boost是C ++,有点像.NET Framework是C#,但可能规模较小。

答案 10 :(得分:2)

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