相关疑难解决方法(0)

如何将向量复制到另一个位置并重用现有的分配内存?

在 C++ 中,要将向量的内容复制到另一个向量,我们使用赋值运算符dest = src。但是,在 Rustsrc中将被移入dest并且不再可用。

我知道最简单的答案是做dest = src.clone()(对于这个问题,我们会承担的缘故TVec<T>Clone)。但是 - 如果我理解正确的话 - 这会创建一个全新的第三向量,其中复制了 的内容src并将其移动到 中dest,丢弃了dest动态分配的数组。如果这是正确的,当我们可以直接将内容复制到dest(假设它有足够的容量)时,这是完全不必要的动态分配。

下面是我制作的一个函数,它完全符合我的意愿:清空dest向量并将 的元素复制src到其中。

// copy contents of src to dest without just cloning src
fn copy_content<T: Clone>(dest: &mut Vec<T>, src: &Vec<T>) {
    dest.clear();
    if dest.capacity() < src.len() {
        dest.reserve(src.len());
    }
    for x in src {
        dest.push(x.clone());
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用内置或标准库实用程序来做到这一点?dest …

clone copy vector rust

7
推荐指数
1
解决办法
1276
查看次数

标签 统计

clone ×1

copy ×1

rust ×1

vector ×1