如何比较数组和向量的一部分?

时间:2016-05-22 17:32:12

标签: rust

我有一个数组和向量,矢量填充在一个循环中。在循环的每次迭代中,我想检查向量的最后4个元素是否等于数组的4个元素。数组的大小为4。

除了逐个比较元素之外,还有更好的方法吗?我喜欢my_array == my_vector[4, -4]

之类的东西

1 个答案:

答案 0 :(得分:11)

  

有没有比一个一个地比较元素更好的方法呢?

是的,您可以将数组的slice与矢量切片进行比较:

fn main() {
    let a = [3, 4, 5, 6];
    let v = vec![0, 1, 2, 3, 4, 5, 6];
    assert_eq!(&a[..], &v[v.len() - 4..]);
}

可以使用任何range表单创建切片。以下是创建切片的一些示例:

fn main() {
    let v = vec![0, 1, 2, 3, 4, 5, 6];

    // indexes 0, 1, 2 (3 not included)
    assert_eq!(&[0, 1, 2], &v[..3]);

    // indexes 2, 3 (4 not included)
    assert_eq!(&[2, 3], &v[2..4]);

    // indexes 3, 4, ..until the last
    assert_eq!(&[3, 4, 5, 6], &v[3..]);

    // all indexes
    assert_eq!(&[0, 1, 2, 3, 4, 5, 6], &v[..]);
}