2

boost::mpl::push_back文件指出:

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

是编译时间的复杂性吗?

4

2 回答 2

4

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

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

于 2012-08-15T12:40:34.550 回答
0

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

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

Wikipedia 对O(n)符号 [1] 有很好的介绍。一个很好的介绍性文本是 Cormen、Lieverson 和 Rivest 的“算法介绍”。

于 2012-10-29T03:59:27.707 回答