给出一个矢量......
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)不同
它是O(1)为实现的代码鲁斯特1.25.0:
pub fn len(&self) -> usize {
self.len
}
Run Code Online (Sandbox Code Playgroud)