【问题标题】:How to address an array index by a negative offset?如何通过负偏移量寻址数组索引?
【发布时间】:2020-12-17 20:36:14
【问题描述】:

假设我有这样的事情:

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

然后我该怎么做:

a[(SIZE/2)+b];

这里数组的usize索引和被减去的负数的i32不匹配。是否有一种方便的方法可以通过带有负偏移量的数组进行索引?

【问题讨论】:

    标签: rust


    【解决方案1】:

    就像@Aplet123 回答的那样,您可以使用演员表。但如果b 始终为负数,您可以保存绝对值,然后将其减去:

    let b = 1;
    
    return a[SIZE/2 - b];
    

    【讨论】:

      【解决方案2】:

      首先将其转换为isize(与usize 大小相同的有符号整数):

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

      【讨论】:

      • 您需要将结果转换回usize 以进行索引
      猜你喜欢
      • 1970-01-01
      • 2015-04-11
      • 2018-12-31
      • 2012-01-31
      • 1970-01-01
      • 2019-04-26
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多