Boost.MPL的复杂性

时间:2012-08-15 12:33:28

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

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

  

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

编译时间是否复杂?

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

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

另一方面,如果文档声称push_back以O(n)复杂度执行,那表明push_back的执行时间可以通过列表长度的线性函数来近似,其中列表的长度在这里是n。属于此复杂性类别的函数称为在线性时间中执行。

维基百科对O(n)符号有很好的介绍[1]。一篇很好的介绍性文章是Cormen,Lieverson和Rivest的“算法导论”。