提升.....什么是大惊小怪?

时间:2011-11-22 17:59:13

标签: c++ boost

很长一段时间以来,作为Java程序员并且只提到了听力提升,我认为它非常受欢迎,因为标准C ++语言没有任何线程机制。但是,我偶然发现了一个可以在linux上用于线程化的库的事实。因此,我有点困惑为什么升级库如此受欢迎?

从有人决定哪些部分加入到“卡住”并学习的角度来看,使用它的程序员可以从招聘人员的角度解释为什么它如此受欢迎和最受青睐的部分(最好是金融发展) )?

为了使Stackoverflow更友好,有哪些库/功能可以提升它的本质?

6 个答案:

答案 0 :(得分:6)

  

我认为它非常受欢迎,因为标准C ++语言没有任何线程机制。但是,我偶然发现了一个可以在linux上用于线程化的库。

这是奇怪的推理。 Boost比线程更多 lot 。另外,仅仅因为有一个用于线程的Linux库并不意味着它可以在 Windows 代码上运行; Boost.Thread是跨平台的。

请允许我点击Boost的一些高点:

智能指针

C ++ 11现在拥有其中的大部分(并使用C ++ 11语言功能对它们进行了改进)。但是在过去8年多的时间里,这就是你实现良好shared_ptr的目的所在。在可能的情况下,应强制使用这些东西。

他们使用C ++生活所以更简单。

正则表达式

不是我的一杯茶,另一个Boost库被纳入C ++ 11。但是如果你想对字符串进行正则表达式搜索,它就没有比这更标准了。

绑定和功能

C ++ 11中包含了另一件事,但除非你能访问C ++ 11编译器/库,否则Boost是你最好的选择。能够在对象中存储任何类型的“可调用”对象对于回调非常有用。并且能够将“可调用”对象适应不同的参数集是非常有用的,特别是对于算法。

文件系统

C ++具有用于打开和关闭文件的标准库工具。但没有什么可以寻找他们或处理文件名。 Boost确实如此,并且在一个非常好的API中启动。它通过平台中立的界面处理特定于平台的编码。它允许在具有它的那些平台上支持Unicode。

范围

你知道标准算法如何采用开始和结束迭代器,但大多数时候你真的只想让它走遍整个容器?范围在这里为您服务。它定义了迭代器范围(容器是哪个),它提供了明确获取范围对象的算法变体。

Range的优点在于范围算法被懒惰地评估。所以你可以做功能式的算法组合,它可以有效地工作。许多算法返回一个范围(实际上是一个范围占位符);如果你将一个范围送入另一个范围,你可以通过简单的合成获得强大的效果。

变体

AKA:一种类型安全的联盟。一旦你将X类型的对象放入其中,除了输入X之外你什么都得不到。期。这是一个有用的工具,可以在不使用派生类的情况下完成一些轻量级运行时多态性工作。

这些只是Boost中少数的库。

答案 1 :(得分:3)

Boost部分是标准模板库提案的舞台舞台。它有强大的线程解决方案。但是,boost还提供了大量其他东西,如容器,表达式解析器......它很有名,因为它是C ++非标准库的中央存储库。

答案 2 :(得分:2)

These是图书馆/功能,可以提升它的本质。线程并不是你想要在应用程序中做的唯一事情...最“受欢迎”取决于你编程的是什么,所有库都是有用的,否则它不太可能被包含在内。

答案 3 :(得分:1)

Boost只是一个非标准的大型图书馆馆藏。

C ++的STL越来越好,但它并没有Boost那么大(而且不打算)。

将Boost视为一组有用的库(用于各种目的,从数学到解析器,从容器到元编程,请参阅列表的文档),这些文件质量很好,恰好打包在一起。

答案 4 :(得分:1)

“boost”只是高质量C ++库的存储库。如果你写了一个很好的C ++库,对很多人有用并且符合提升质量标准,你可以要求它被添加到提升中。

发生在C ++标准上的流入C ++程序员也是一些提升库的编写者。一些提升库现在是标准的。这使它成为C ++社区的中心位置。

关于你关于线程的问题,boost将提供 portability 而不是使用仅限linux的线程lib。升级版也适用于Windows。

答案 5 :(得分:0)

作为一个Java程序,您可能习惯于在指纹上使用类来执行各种操作,从线程到XML解析再到记录到正则表达式。

与大多数其他语言相比,C ++核心语言在这方面很少。我们有容器和算法,但不是很多。 Boost填补了C ++和其他语言之间的一些空白,我们可以立即导入和使用现成的和测试库,而不是花时间重新创建它们。

在C ++ 11中,Boost中的一些最好的库(Regex,Unordered Cntainers,Smart Ptr等等)正在成为该语言的一部分。这不是巧合,这是他们作为Boost的一部分受欢迎和成熟的直接结果。

就最吸引人的方面而言,我会说对每个图书馆的粗略熟悉是最重要的。能够说“是的我已经使用了提升”和“Boost.Widget”将非常适合这个问题。其他大部分内容都只是API参考。

如果我必须选择一个:Boost.Asio肯定改变了我对网络的看法。 (并且它使用了shared_from_this()和Smart Ptr向我展示了考虑内存管理的新方法。抱歉,我猜这是两个。)