簡體   English   中英

如何刪除 Rust 中另一個向量中出現的向量元素?

[英]How do I remove the elements of vector that occur in another vector in Rust?

我想要不相交的結果。 這是我能想到的最好的:

for rem in &remove_vec {
    orig_vec.retain(|i| !i.eq(rem));
}

您正在使用錯誤的工具來完成這項工作。 相反,將要刪除的項目轉換為一個集合,即BTreeSetHashSet

use std::{collections::BTreeSet, iter::FromIterator};

fn demo<T>(mut items: Vec<T>, to_remove: Vec<T>) -> Vec<T>
where
    T: std::cmp::Ord,
{
    let to_remove = BTreeSet::from_iter(to_remove);

    items.retain(|e| !to_remove.contains(e));

    items
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM