既然我已经使用这个网站开始,我不断听到Boost库。 我想知道是什么的一些Boost库(因此我为什么要使用它)的主要好处,以及如何便携式是Boost库?
Answer 1:
升压由标委会的几个成员组织。
所以这是一个滋生地库,将在未来的标准。
- 这是一个扩展到STL(它留出了位填充)
- 这是有据可查的。
- 它非常同行评审。
- 它具有高活性,发现缺陷并固定迅速。
- 这是平台中立和作品无处不在。
- 它是免费使用。
随着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_ptr
和weak_ptr
,尤其是在多线程代码,独自一人值得安装的推动作用。 BOOST_STATIC_ASSERT
也是做编译时的逻辑检查,很酷。
在提升了很多类和公用事业都在头部,这意味着你可以得到很多的功能,而完全不必编译任何东西的事实,也是一个加号。 便携性一般是没有问题的,除非你使用一个非常老的编译器。 我曾经试图让MPL与VC6工作,它完全在爆炸之前打印出40000个警告/内部错误。 但总的来说大多数图书馆都应该不管你的工作平台或编译器供应商。
考虑到一个事实,即从加速不少东西已经在TR1,并且将最有可能在C ++标准库的一个修订版。 这是一个相当大的认可。
Answer 10:
提升是一个非常广泛的(通常)通用的结构,可以帮助在几乎任何应用程序库。 这可以通过一个事实,即许多升压组件都被列入的C ++ 0x规格显示。
这也是在至少各大平台之间移植,并且应该可以移植到几乎与大多符合标准的C ++编译器的东西。
唯一的警告是,可以有很多Boost库之间夹杂的依赖,使其难以挑出只是一个特定组成部分分发(不是整个boost库等)。
Answer 11:
上述所有的,再加上它鼓励了很多现代的,最佳实践的C ++技术。 它往往以提高代码的质量。
Answer 12:
还要注意最刺激的是模板,这样不需要建设
(只包括正确的头文件)。
确实需要建设的几个部分都是可选的:
这些可以各自独立地内置从而防止不必要的膨胀为不需要的代码。