题
所以,我已经读通过似乎的提高图书馆获得用很多在实践中(不在我的店里,不过).为什么是这?什么使得它如此美妙吗?
解决方案
提高 使用如此广泛,因为:
- 它是开放源代码和同行审查。
- 它提供了一个 广泛的范围 平台无关的功能,STL错过了。
- 这是一个补充STL而不是替代。
- 许多提高开发商在C++标准委员会。事实上,许多地区的提高被认为是包含在下一C++标准图书馆。
- 这是记录在案。
- 它的 许可证 允许列入开放源码和封闭源项目。
- 其特点是不是 通常 相互依赖,所以你可以链接,只有部分需要。[吕克Hermitte's评论]
其他提示
从主页:
"...一个最高度重视和专业设计用C++图书馆项目的世界。" —草本植物和安德烈*萨特Alexandrescu、C++编码的标准
"项目55:自己熟悉的提升。" —斯科特*梅尔、有效C++,3rd Ed.
"显而易见的解决方案对于大多数程序是使用图书馆,提供一个优雅和高效的平台,独立所需的服务。例子是提升..." —Bjarne Stroustrup、抽象、图书馆和效率的C++
因此,这是一个范围广泛使用和接受库,但是为什么你会需要它吗?
如果你需要:
- regex
- 功能结合
- lambda功能
- 单元测试
- 聪明的指针
- noncopyable,可选的
- 化
- 通用的日期
- 便携式文件系统
- 圆形的缓冲区
- 配置工具
- 通用图像图书馆
- TR1
- 螺纹
- uBLAS
因为他们在标准库中添加了许多缺失的内容,所以其中一些内容已经包含在标准库中。
提升人们并非撒谎:
组织为什么要使用Boost?
总之,生产力。用于 像Boost这样的高质量图书馆 加速初步开发,结果 减少错误,减少 重新发明,削减 长期维护费用。从那以后 Boost库往往成为de 事实上或法律上的标准,很多 程序员已经熟悉了 它们。
十个Boost库是 包含在C ++标准库中 TR1,等等以后会全部完成 标准化。更多Boost库 TR2正在筹备中。运用 Boost库为组织提供了支持 采用新的先机 技术。
许多组织已经使用了程序 与Adobe一样使用Boost实现 Acrobat Reader 7.0。
一些Boost类非常有用(shared_ptr),但我认为他们对Boost中的特征和概念有点了解。编译时间和巨大的二进制大小对于Boost来说是完全疯狂的,就像任何模板繁重的代码一样。必须保持平衡。我不确定Boost是否找到了它。
它添加了库,允许更现代的C ++编程方法。
根据我的经验,许多C ++程序员实际上是20世纪90年代早期的C ++程序员,几乎都在编写C ++类,而不是使用泛型。更现代的方法使用泛型以更像动态语言的方式组合软件,但最终仍然可以获得类型检查/性能。看一下有点难看。但是一旦你克服了语法问题,它真的很不错。 Boost为您提供了很多轻松编写内容所需的工具。智能指针,函数,lambdas,绑定等。然后有一些boost库利用这种编写C ++的新方式来提供网络,正则表达式等等......
如果您正在编写大量的for循环,或者手动滚动函数对象,或者进行内存管理,那么你肯定应该检查一下。
提高是一个收藏图书馆填补需要共同的多C++的项目。一般来说,他们做优先考虑的正确性、重用、便于携带、运行时性和空间效率的可读性提高执行代码,或有时,编译时间。他们往往不复盖完整的高级功能需求(例如应用程序框架),而不是(值得庆幸的是)提供建筑模块,可以更自由地结合而没有支配或控制的应用程序设计。
重要的原因,要考虑使用提高包括:
- 大多数图书馆是很好的测试和设计:他们通常得到一个合理的声音审查的一些优秀的程序员,相比的人与家庭酿酒方案在同一问题的空间,并广泛使用的足够收集广泛的真实世界的反馈
- 它已经编写以及你的解决方案可能不是
- 这是很便携式(但是,各图书馆)
- 更多的人在C++社区将有一个头开始帮助你,与你的代码
- 提高往往是一个证明地介绍向C++的标准,所以你就会有不少工作要做,在重写你的代码来与将来的标准没有提高
- 由于社会需求,编译器供应商都更有可能测试和作出反应问题的正确性与提高使用情况
- 熟悉提高图书馆将帮助你做类似的工作上的其他项目,可能在其他公司,在这里什么代码你可以编写现在不可能重新使用
该图书馆所描述的在线或两个在这里: http://www.boost.org/doc/libs/.
因为C ++标准库并非完全完成。
应该采取 Kevlin Henney 参与的任何事情注意。
基本上提升标准将成为什么,除了Boost获得的所有同行评审和使用之外,你可以非常确定你的依赖关系会得到很多好处。
然而,大多数商店不使用Boost,因为它具有外部依赖性。实际上,减少外部依赖性也非常重要。
Boost是C ++,有点像.NET Framework是C#,但可能规模较小。
我使用文件系统库退出了一点,而boost :: shared_ptr非常漂亮。我听说它也做其他事情。