我们应该更喜欢Boost还是标准lib?

Off*_*rmo 23 c++ boost

我正在阅读Boost阵列文档,我看到这一行:

如果您使用的是C++ 11,则应考虑使用std :: array而不是boost :: array

我的印象是Boost,因为它的主要库,总是比标准库更好,因为:

  • boost永远不会比标准的lib差
  • boost可能会提供更多功能
  • 与标准lib相比,boost的质量始终相同(编写C++标准的人是主动提升开发人员/主管)
  • 几年之后,主要的提升功能最终会出现在标准库中

所以我更倾向于提升stdlib?

如果不是/更复杂,我的哪些假设需要纠正?

Dan*_*lli 24

我认为你应该在可用的时候使用标准的库,因为......它是标准的,并附带编译器.此外,如果你使用boost,你需要一个讨厌的外部依赖.

所以,我的建议是:尽可能使用std.如果您正在编写可移植代码,也必须使用旧编译器编译,您可以考虑使用自己的命名空间(例如:cxx0x)根据您正在使用的编译器嵌入std或boost命名空间(这称为命名空间别名):

#ifdef COMPILER_HAS_CXX0X
    #include <memory>
    namespace cxx0x = std;
#else
    #include <boost/shared_ptr.hpp>
    namespace cxx0x = boost;
#endif

...

cxx0x::shared_ptr< MyClass > = ...
Run Code Online (Sandbox Code Playgroud)

  • +1为标准! (3认同)
  • 这称为命名空间别名. (2认同)
  • 这是2013年...时间承认**`CXX11`** (2认同)
  • 这是2014年,所以... CXX14 (2认同)