该boost::mpl::push_back
文件指出:
push_back 在序列末尾执行插入,保证 O(1) 复杂度。
是编译时间的复杂性吗?
是的当然。它适用于类型,而不适用于值。
Boost.MPL 库是一个通用的高级 C++ 模板元编程框架,包含编译时算法、序列和元函数
O(1)
是指运行时的复杂性。通常,及时执行的程序O(1)
被称为以恒定时间执行。在这种情况下,文档声称 push_back 执行所需的时间相对于列表的长度是恒定的;也就是说,它的执行时间将是一个与列表长度无关的固定常数时间。
另一方面,如果文档声称 push_back 执行起来O(n)
很复杂,那将表明 push_back 的执行时间可以通过列表长度的线性函数来近似,这里的列表长度为n
. 属于这种复杂性类别的函数被称为以线性时间执行。
Wikipedia 对O(n)
符号 [1] 有很好的介绍。一个很好的介绍性文本是 Cormen、Lieverson 和 Rivest 的“算法介绍”。