最近我读到了关于抽象机器和 as-if 规则的东西(“as-if”规则到底是什么?),以及标准库对时间复杂度的要求(比如这个:Is list::size() 真的O(n)?)。
- 标准库的时间/空间复杂度要求是抽象机器还是真实的具体机器?
如果这些是在抽象机器方面,那么看起来一个实现实际上可以在复杂性方面生成效率较低的代码,即使它似乎不切实际。
- 标准是否提到了非标准库代码的时间/空间复杂性?
例如,我可能编写自定义排序代码并期望 O(n log n) 时间,但如果实现只是将其视为抽象机器中的代码,则允许在汇编和机器代码中生成较慢的排序,例如将其更改为 O (n^2) 排序,即使在实际情况下不太可能这样做。
或者我可能错过了抽象机器和真实具体机器之间的转换要求。你能帮我澄清一下吗?:)
虽然我主要是看C++标准的东西,但我也想知道C标准的情况。所以这个问题同时标记了两者。