【问题标题】:Boost.MPL complexityBoost.MPL 复杂度
【发布时间】:2012-08-15 12:33:28
【问题描述】:

boost::mpl::push_back 文档指出:

push_back 在序列末尾执行插入 保证 O(1) 复杂度。

是编译时间复杂吗?

【问题讨论】:

    标签: c++ boost complexity-theory boost-mpl


    【解决方案1】:

    当然可以。它适用于类型,而不适用于值。

    Boost.MPL 库是一个通用的高级 C++ 模板元编程框架,包含编译时算法、序列和元函数

    【讨论】:

      【解决方案2】:

      O(1) 指的是运行时的复杂性。通常,在O(1) 时间执行的过程被称为在恒定时间中执行。在这种情况下,文档声称 push_back 执行所需的时间相对于列表的长度是常量;也就是说,它的执行时间将是一个与列表长度无关的固定常数时间。

      另一方面,如果文档声称 push_back 以 O(n) 复杂度执行,则表明 push_back 的执行时间可以近似为列表长度的线性函数,此处列表的长度为 @987654326 @。属于这种复杂性类别的函数被称为在线性时间中执行。

      维基百科对O(n) 表示法有很好的介绍[1]。 Cormen、Lieverson 和 Rivest 的“算法简介”是一本很好的介绍性文本。

      【讨论】:

      • 感谢您对 O-notation 的详细解释。我很困惑这个运行时参数被应用于编译时方法。对我来说,问题是关于术语的。这样的事情实际上并没有在运行时执行。我的意思是我们可以说关键字“类”也需要 O(1)。
      猜你喜欢
      • 1970-01-01
      • 2016-02-13
      • 2021-04-22
      • 2012-08-14
      • 2018-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-20
      相关资源
      最近更新 更多