我有一个数组和向量,矢量填充在一个循环中。在循环的每次迭代中,我想检查向量的最后4个元素是否等于数组的4个元素。数组的大小为4。
除了逐个比较元素之外,还有更好的方法吗?我喜欢my_array == my_vector[4, -4]
答案 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[..]);
}