Rust 有效地获取Vec<;参考<';a、 T>&燃气轮机;来自Ref<';a、 b树集<;T>&燃气轮机;
我有一个Rust 有效地获取Vec<;参考<';a、 T>&燃气轮机;来自Ref<';a、 b树集<;T>&燃气轮机;,rust,reference,time-complexity,refcell,Rust,Reference,Time Complexity,Refcell,我有一个Ref> 一种方法是: fn get_refs<'a, T: Ord>(btree: Ref<'a, BTreeSet<T>>) -> Vec<Ref<'a, T>> { let mut result = Vec::new(); for e in btree.iter() { result.push(Ref::map(Ref::clone(&btree), |t| t.get(&am
Ref>
一种方法是:
fn get_refs<'a, T: Ord>(btree: Ref<'a, BTreeSet<T>>) -> Vec<Ref<'a, T>> {
let mut result = Vec::new();
for e in btree.iter() {
result.push(Ref::map(Ref::clone(&btree), |t| t.get(&e).unwrap()))
}
result
}
我的问题是:给定
Ref>
在O(n)
时间复杂度?中的Ref
最简单的方法是引用Ref
而不是Ref
:
fn get_refs vecs如果您非常关心复杂性,那么最好从一开始就使用这两种数据结构,并使用集合来获取项并使用向量来迭代它们。当您添加一个项目时,您对两个结构都这样做,因此添加仍然是摊销O(logn)
fn get_refs<'a, T: Ord>(btree: &'a BTreeSet<T>) -> Vec<&'a T> {
btree.iter().collect()
}