Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 有效地获取Vec<;参考<';a、 T>&燃气轮机;来自Ref<';a、 b树集<;T>&燃气轮机;_Rust_Reference_Time Complexity_Refcell - Fatal编程技术网

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()
}