所以,我一直在阅读,看起来Boost库在实践中得到了很多使用(不过在我的店里).为什么是这样?是什么让它如此美妙?
Boost被广泛使用,因为:
它是开源和同行评审的.
它提供了STL错过的广泛的平台无关功能.
它是STL的补充,而不是替代品.
许多Boost开发人员都在C++标准委员会.事实上,Boost的许多部分被认为包含在下一个C++标准库中.
它记录得很好.
其许可证允许包含在开源和闭源项目中.
它的特点是不通常依赖于对方,所以你可以只链接您所需要的零件.[ Luc Hermitte的评论]
从主页:
"......世界上最受尊敬和专业设计的C++库项目之一." - Herb Sutter和Andrei Alexandrescu,C++编码标准
"第55项:熟悉Boost." - Scott Meyers,Effective C++,3rd Ed.
"对大多数程序员来说,显而易见的解决方案是使用一个独立于所需服务的优雅高效平台的库.例如BOOST ..." - Bjarne Stroustrup,抽象,库和C++的效率
因此,它是一系列广泛使用和接受的库,但您为什么需要它?
如果你需要:
正则表达式
功能绑定
lambda函数
单元测试
智能指针
不可复制的,可选的
系列化
通用日期
便携式文件系统
循环缓冲区
配置工具
通用图像库
TR1
线程
的uBLAS
而更多的时候,你的代码在C++中,看看升压.
因为它们为标准库添加了许多缺失的东西,所以它们中的一些被包含在标准中.
提升人们不说谎:
组织为什么要使用Boost?
总之,生产力.使用像Boost这样的高质量库可加快初始开发速度,减少错误,减少重新发明,并降低长期维护成本.由于Boost库往往成为事实上或法律上的标准,许多程序员已经熟悉它们.
10个Boost库包含在C++标准库的TR1中,因此可以在以后完全标准化.更多Boost库正在为TR2提供支持.使用Boost库使组织在采用新技术方面处于领先地位.
许多组织已经使用Boost实现的程序,如Adobe Acrobat Reader 7.0.
一些Boost类非常有用(shared_ptr),但我认为它们对Boost中的特征和概念有点过分了.编译时间和巨大的二进制大小对于Boost来说是完全疯狂的,就像任何模板繁重的代码一样.必须保持平衡.我不确定Boost是否找到了它.
它添加了库,允许更现代的C++编程方法.
根据我的经验,许多C++程序员实际上是20世纪90年代早期的C++程序员,几乎都在编写C++类,而不是使用泛型.更现代的方法是使用泛型以更像动态语言的方式组合软件,但最终仍然可以获得类型检查/性能.看一下有点难看.但是一旦你克服了语法问题,它真的很不错.Boost为您提供了很多轻松编写内容所需的工具.智能指针,函数,lambdas,绑定等.然后有一些boost库利用这种新的编写C++的方式来提供网络,正则表达式等等...
如果您正在编写大量的for循环,或者手动滚动功能对象,或者进行内存管理,那么你肯定应该检查一下.
BOOST是一系列库,满足了许多C++项目的共同需求.通常,它们优先考虑BOOST实现代码的可读性或有时编译时间的正确性,可重用性,可移植性,运行时性能和空间效率.它们往往不包括完整的高级功能需求(例如应用程序框架),而是(幸运的是)提供可以更自由地组合的构建块,而无需指示或支配应用程序设计.
考虑使用BOOST的重要原因包括:
大多数图书馆都经过了很好的测试和设计:与在同一问题空间中使用家庭酿造解决方案的人相比,他们通常会得到一些优秀程序员的合理评价,并且被广泛使用以收集广泛的实际反馈
它已经写好了,你的解决方案可能不是
它非常便携(但每个库不同)
C++社区中的更多人将有助于您使用代码
BOOST通常是引入C++标准的试验场,因此您在重写代码时可以减少与未来标准兼容的工作量.
由于社区需求,编译器供应商更有可能通过BOOST使用来测试和回应正确性问题
熟悉boost库可以帮助你在其他项目上做类似的工作,可能在其他公司,你现在可能写的任何代码都可能无法重用
这些库在这里用一两行描述:http://www.boost.org/doc/libs/.
因为C++标准库并不是那么完整.