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

时间:2018-04-11 12:55:32

标签: rust

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

let v = vec![1, 2, 3, 4, 5];

是在呼叫v.len() O(1)还是O(n)?

没有" The Book" (从我到目前为止所知)并且the docs提到.len()是否是恒定时间,我在Stack Overflow或其他地方找不到任何东西。

我假设它是[].push().pop() all are以来的O(1),但我想在此之前确定我用v.len()丢弃了我的代码。

我知道我可以很容易地存储/引用len的返回但在某些情况下 - 比如内部函数 - 我不想继续传递矢量和< / em>一个int。

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

1 个答案:

答案 0 :(得分:8)

Rust 1.25.0中的the implemented codeO(1)

pub fn len(&self) -> usize {
    self.len
}