代码之家  ›  专栏  ›  技术社区  ›  Alper

如何通过负偏移来处理数组索引?

  •  0
  • Alper  · 技术社区  · 4 年前

    说我有这样的东西:

    let SIZE = 100;
    let a = [0; SIZE];
    let b = -1;
    

    那么,我该如何进行以下操作:

    a[(SIZE/2)+b];
    

    数组的usize索引和被减去的负数的i32之间存在不匹配。是否有一种方便的方法来索引一个也有负偏移的数组?

    1 回复  |  直到 4 年前
        1
  •  3
  •   Martí    4 年前

    就像@Aplet123回答的那样,你可以使用石膏。但如果 b 始终为负,您可以保存绝对值,只需将其替换为:

    let b = 1;
    
    return a[SIZE/2 - b];
    
        2
  •  2
  •   Aplet123    4 年前

    把它投给一个 isize (一个与a大小相同的带符号整数 usize )第一:

    a[((SIZE / 2) as isize + b) as usize]