Vec :: len的运行时复杂度是多少?

kev*_*arr 8 rust

给出一个矢量......

let v = vec![1, 2, 3, 4, 5];
Run Code Online (Sandbox Code Playgroud)

是调用v.len()O(1)还是O(n)?


既不是"The Book"(从我到目前为止所说的)也不是文档提到是否.len()是恒定时间,我在Stack Overflow或其他地方找不到任何东西.

我假设它是(1)自Ò [],.push().pop() 所有的都是,但我想我之前我垃圾的代码肯定v.len().

我知道我可以很容易地存储/引用返回len但在某些情况下 - 比如内部函数 - 我不想继续传递向量 int.

感谢@Stargateur指出索引的O(1)与push/pop的摊销 O(1)不同

Yur*_*nko 8

它是O(1)实现的代码鲁斯特1.25.0:

pub fn len(&self) -> usize {
    self.len
}
Run Code Online (Sandbox Code Playgroud)