This question already has answers here:
Vec::dedup does not work — how do I deduplicate a vector of strings?

(2个答案)


2年前关闭。




我需要从Vec<char>过滤出重复项,这是合并两个vectors的结果。我正在使用dedup方法,但是它只会从原点部分和邻域元素中删除重复项。
例如:
fn main() {
    let mut a = "abccdddd".chars().collect::<Vec<char>>();
    let mut b = "dadddefacd".chars().collect::<Vec<char>>();
    a.append(&mut b);
    a.dedup();
    println!("{:?}", a)
}

预期:['a', 'b', 'c', 'd', 'e', 'f']得到了:['a', 'b', 'c', 'd', 'a', 'd', 'e', 'f', 'a', 'c', 'd']
(playground)

如何从合并的向量中删除重复项?

最佳答案

引用 Vec::dedup 的文档



您必须先对向量排序,然后对其进行消散。

fn main() {
    let mut a = "abccdddd".chars().collect::<Vec<char>>();
    let mut b = "addddefacd".chars().collect::<Vec<char>>();
    a.append(&mut b);
    a.sort();
    a.dedup();
    println!("{:?}", a)
}

关于rust - Vec::dedup不起作用-如何从字符向量中过滤重复项? [复制],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53318918/

10-11 22:10