rust - 如何删除 Rust 中另一个向量中出现的向量元素?
问题描述
我想要不相交的结果。这是我能想到的最好的:
for rem in &remove_vec {
orig_vec.retain(|i| !i.eq(rem));
}
解决方案
您为这项工作使用了错误的工具。相反,将要删除的项目转换为一个集合,BTreeSet
或者HashSet
:
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
}
推荐阅读
- sql - Tableau 和 MariaDB 连接问题
- angular - Angular ViewChild 和 ComponentFactoryResolver - 保持状态
- javascript - window.center().open(); 第一次通话后偏离中心
- javascript - 如果条件没有检测到空语句js
- jquery - 使用 jQuery 将类添加到单击(嵌套)的 div 元素
- rgb - Postscript、Ghostscript、GSView 中的色彩空间管理
- python-2.7 - “tcl\encoding\ascii.enc 无法提取”用于 pyinstaller-frozen .exe - Windows
- c++ - 将内存中的 .raw 向量转换为 TIFF 数据
- ssas - 由于数据库中的结构更改,当前会话不再可用 - 表格
- twitter-bootstrap - Coldfusion / Bootstrap / Select2 显示错误