【问题标题】:How do I initialize an array of numbers with a variable?如何使用变量初始化数字数组?
【发布时间】:2022-08-11 17:14:39
【问题描述】:

我来自java,我喜欢以这种方式使用数组。

public int do_something(int width, int height){
     int[][] nums = new int[height][width];
     return 1;
}

在上面不是问题,java 将创建一个 int 值的二维数组并用零填充它们。

我也想用 rust 来实现这一点。 这是我尝试过的。

fn do_something(n: usize, m: usize) -> i32 {
    let memo: [[i32; m]; n] = [[0; m]; n];
    1
}

该程序不会编译它告诉我我不能用非常数初始化数组。 我的问题是我事先不知道 n 和 m 的值。

我尝试使用向量而不是这样的数组:

fn do_something(n: usize, m: usize) -> i32 {
    let mut nums: Vec<Vec<i32>> = Vec::new();

    for _i in 0..n{
        let mut each: Vec<i32> = Vec::new();
        for _j in 0..m{
            each.push(0);
        }

        nums.push(each);
    }

    println!(\"{:?}\", nums);
    1
}

有没有更简单的方法来用变量初始化数组并用零填充它们?还是我应该用上述方法就足够了?

    标签: arrays rust initialization


    【解决方案1】:

    有没有更简单的方法来用变量初始化数组并用零填充它们?

    您可以将数组文字(需要编译时长度)转换为 vec 伪文字,它不会:

    fn do_something(n: usize, m: usize) -> i32 {
        let memo = vec![vec![0i32; m]; n];
        1
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-14
      • 1970-01-01
      • 2021-05-10
      • 2013-09-20
      • 2014-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多