Boost库[关闭](Boost Library [closed])

2019-07-20 02:16发布

既然我已经使用这个网站开始,我不断听到Boost库。 我想知道是什么的一些Boost库(因此我为什么要使用它)的主要好处,以及如何便携式是Boost库?

Answer 1:

升压由标委会的几个成员组织。
所以这是一个滋生地库,将在未来的标准。

  1. 这是一个扩展到STL(它留出了位填充)
  2. 这是有据可查的。
  3. 它非常同行评审。
  4. 它具有高活性,发现缺陷并固定迅速。
  5. 这是平台中立和作品无处不在。
  6. 它是免费使用。

随着TR1上来不久就高兴知道,升压已经有很多覆盖地面。 很多在TR1基本上直接从升压原稿适于并因而库已经尝试和测试。 不同的是,他们已经搬进了性病:: TR1命名空间(而不是提升)。

所有你需要做的是以下内容添加到您的编译器默认包含搜索路径 :

<boost-install-path>/boost/tr1/tr1

然后,当你包括标准头提升会自动导入所有需要的东西进入空间std :: TR1

例如:

使用std :: tr1 :: share_ptr你只需要包括<记忆>。 这会给你所有的智能指针与一个文件。



Answer 2:

你可以简单地读取加速背景信息页面来获得的,为什么你应该使用升压,哪些是你可以用它快速了解。 值得花几分钟的时间。



Answer 3:

99%的便携。

我要说的是,它具有一旦你发现需要由升压解决那些真正有用的不少图书馆。 要么你自己的代码,或者你使用一个非常坚实的图书馆。 有过像多指标,λ,程序选项,正则表达式,和的SmartPtr元组东西货架源是惊人的...

最好的办法是花一些时间经历了不同的库文件,并评估是否可以使用任何你的。

值得!



Answer 4:

你得到了很多的是C ++ 0x中来的东西。 但除了通用性,一些更好的细节是一个简单的正则表达式库 ,为铸造库从字符串强制转换为整数 (词法施法):

int iResult = 0;
try
{
    iResult = lexical_cast<int>("4");
}
catch(bad_lexical_cast &)
{
    cout << "Unable to cast string to int";
}

一个日期/时间库 ,等等...

using namespace boost::gregorian;
date weekstart(2002,Feb,1);
date thursday_next = next_weekday(weekstart, Thursday); // following Thursday

还有一个Python接口 (升压的Python),一个词法分析器/分析器DSL (升压灵):

// A grammar in C++ for equations
group       = '(' >> expression >> ')';
factor      = integer | group;
term        = factor >> *(('*' >> factor) | ('/' >> factor));
expression  = term >> *(('+' >> term) | ('-' >> term));

而这只是冰山一角......



Answer 5:

升压是伟大的,但只是打魔鬼代言人这里有一些原因,你可能不希望使用升压:

  • 有时确实无法正常编译/工作在旧的编译器。
  • 它通常会增加编译小于模板重的方法多次。
  • 有些升压代码可能不会做什么你认为它。 阅读文件!
  • 模板滥用会导致无法读取错误消息。
  • 模板滥用会导致代码很难在调试器来逐步通过。
  • 它是出血边缘C ++。 加速的下一个版本可能不再编译您当前的(旧的)编译器。

所有这一切并不意味着你不应该看一下Boost的代码和自己的一些想法,即使你不使用升压,因为它是。



Answer 6:

升压是C ++库的集合。 其中10个被包括在的C ++ 0x的TR1。

你可以在这里得到开始升压 。



Answer 7:

升压是审查C ++库,把重点放在便携性和正确性高品质同行的集合。 它作为事实上的证明为新增加的语言和标准库的理由。 看看他们的网站了解更多详情。



Answer 8:

Boost的优势:它的广泛使用,将移植到任何现代C ++编译器或任何平台。
该功能是独立的平台,你不必去学习每一个新的框架,一个新的线程设计。
它封装了很多platfom特定功能,如以标准方式的文件系统。

这就是C ++应该有发货! 很多Java的普及是附带一个标准库做你想要的prety太多的一切。 C ++只是不幸继承了有限C / Unix的标准功能。



Answer 9:

shared_ptrweak_ptr ,尤其是在多线程代码,独自一人值得安装的推动作用。 BOOST_STATIC_ASSERT也是做编译时的逻辑检查,很酷。

在提升了很多类和公用事业都在头部,这意味着你可以得到很多的功能,而完全不必编译任何东西的事实,也是一个加号。 便携性一般是没有问题的,除非你使用一个非常老的编译器。 我曾经试图让MPL与VC6工作,它完全在爆炸之前打印出40000个警告/内部错误。 但总的来说大多数图书馆都应该不管你的工作平台或编译器供应商。

考虑到一个事实,即从加速不少东西已经在TR1,并且将最有可能在C ++标准库的一个修订版。 这是一个相当大的认可。



Answer 10:

提升是一个非常广泛的(通常)通用的结构,可以帮助在几乎任何应用程序库。 这可以通过一个事实,即许多升压组件都被列入的C ++ 0x规格显示。

这也是在至少各大平台之间移植,并且应该可以移植到几乎与大多符合标准的C ++编译器的东西。

唯一的警告是,可以有很多Boost库之间夹杂的依赖,使其难以挑出只是一个特定组成部分分发(不是整个boost库等)。



Answer 11:

上述所有的,再加上它鼓励了很多现代的,最佳实践的C ++技术。 它往往以提高代码的质量。



Answer 12:

还要注意最刺激的是模板,这样不需要建设
(只包括正确的头文件)。

确实需要建设的几个部分都是可选的:
这些可以各自独立地内置从而防止不必要的膨胀为不需要的代码。



文章来源: Boost Library [closed]
标签: c++ boost