【问题标题】:how do i get started using boost我如何开始使用 boost
【发布时间】:2009-03-28 19:38:48
【问题描述】:

我在这里听到了很多关于 boost 的信息,我开始认为它对我的软件开发有很大帮助。在我的特殊情况下,在并发和内存管理方面更是如此,因为我们在这方面有很多错误。

我需要完善哪些关键语言功能才能有效地从使用 boost 中受益并缩短学习曲线?我已经看到 函数对象 是常用的,所以我可能需要完善它。

此外,是否有任何教程和 101 资源我可以快速查看,以便对使用 boost 有一个感觉和理解。

我意识到有很多提升机会,我必须为正确的工作选择正确的工具,但任何潜在客户都会有所帮助。

相关

【问题讨论】:

标签: c++ boost


【解决方案1】:

Boost 拥有数量惊人的库。 容易上手的是

  • 不可复制
  • 数组
  • 循环缓冲区
  • foreach
  • 运算符(我个人最喜欢的之一)
  • smart_ptr
  • 日期时间

更高级的包括

  • λ
  • 绑定
  • iostreams
  • 序列化
  • 线程

习惯于提升需要时间,但我向你保证,它会让你的生活变得更好。此外,了解 boost 库的编码方式将帮助您更好地使用 c++ 编码,尤其是模板。

您提到了在尝试提升之前应该查找的内容。我同意函数对象是一件值得研究的好东西。另外,请务必查找有关模板编程的信息。确保您知道的一个常见问题是何时将 typename 限定符用于依赖类型。然而,在大多数情况下,这些库都有很好的文档记录,包括示例和参考资料。

【讨论】:

  • 太棒了。这看起来是渐进的,可能会采用这种方法,包括此处答案中的所有其他建议。谢谢
【解决方案2】:

讨论了学习提升here。至于有用的语言功能?他们都是。如果您对 C++ 了解不足,则使用 C++ 是一种危险的语言。 RAII、函子/函数对象和模板可能涵盖了最重要的方面。 Boost 的设计与 STL 类似,因此了解您的标准库至关重要。 Boost 本身使用了很多模板元编程,但作为库用户,您不会经常需要它(除非您开始使用 Boost.MPL)

与内存管理相关的错误是一个很好的指标,表明它是 C++,而不是你需要重温的 Boost。安全处理内存的技术是众所周知的,并不是 Boost 特有的。 (Boost 的智能指针明显例外)。 RAII 可能是处理此类问题需要理解的最重要的概念。

【讨论】:

  • 我会引用你的话,C++ 是一种危险的语言,如果你对 C++ 了解不够,就会使用它,我的感受真的与你的想法产生了共鸣。但我没有足够的经验,无法用语言将它们具体化。
【解决方案3】:

我需要完善哪些关键语言功能才能有效地从使用 boost 中受益并缩短学习曲线?

  • 模板
  • 函子
  • 例外情况
  • STL
    • 迭代器
    • 算法
    • 容器

...等等。

是否有任何教程和 101 资源我可以快速查看以了解和了解如何使用 boost。

Boost 有据可查。开始here

有太多的图书馆迷路了。我想说从一些简单的东西开始,也许是智能指针或 Boost.Test(单元测试框架)——这将很快帮助你开始。另外,试着想想你不能用 STL 轻易解决的问题。然后查找 Boost 文档或在此处发布。

如果您对函数式编程感到满意,请查看 MPL/Lambda 库。

【讨论】:

  • 谢谢。应该澄清一下,我已经熟悉 C++,包括使用 STL、Excpetions 和模板。
【解决方案4】:

第一个 IMO 是 smart pointers。集成到新代码中很简单,并且对于现有代码通常不是问题。它们使内存管理变得容易,并且也适用于许多其他资源。

C++ 让您能够管理自己的内存,智能指针让您(大多数情况下)在不需要时随意使用它。

第二个是 - 正如你所提到的 - 函数对象,它们缩小了 C++ 中传统上通过继承解决的一个很大差距,这在许多情况下是强耦合。

除了这两个之外,我对 boost 的经验很少,但其余的大部分都是相当“情境”的——你可能需要也可能不需要它。获取overview over the libraries,看看你需要什么。

boost::anyboost::variant 很好,你需要一个变体数据类型,有两种不同的方法。

boost::regex 如果你需要一些文本解析。

boost::threadboost::filesystem 帮助您编写可移植代码。如果您已经拥有良好 平台特定库,则可能不需要它们 - 但无论如何它们都比 API 或 C++ 级别更好。

也许你喜欢我对boost smart pointers 的介绍,并为他们使用a rather unorthodox

【讨论】:

    【解决方案5】:

    试试 Björn Karlsson 的书:Beyond the C++ Standard Library: An Introduction to Boost。它非常简单易懂。我在读完 Scott Meyers 的三本 c++ 书籍(有效系列)后阅读了这篇文章。

    【讨论】:

      【解决方案6】:

      阅读Beyond the C++ Standard Library: An Introduction to Boost 后,我建议随便浏览boost.org 上的文档,以了解可用的内容。当某个特定的 boost 库看起来很适合特定应用程序时,您可以深入研究它。

      【讨论】:

        【解决方案7】:

        我认为 shared_ptr 应该是最容易开始的地方。 开始使用它来代替简单的指针或 auto_ptr 数据类型。

        你也可以看看weak_ptr。

        【讨论】:

        • 简单地使用 shared_ptr 代替 auto_ptr 并不适用于所有情况。查找“Ownership Semantics”,它是 C++ 中内存管理的关键。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-20
        • 2018-11-04
        • 1970-01-01
        • 2013-05-25
        相关资源
        最近更新 更多