如何填充具有预定容量的向量?

Jul*_*a O 2 rust

我正在尝试使用一个矢量初始化后填充一个矢量,with_capacity()因为在创建矢量之前已知元素的数量,并且使用它似乎更有效。

以下代码不会使用随机值AT ALL填充:println!("{}", v.len());输出零。

use rand::Rng;

fn main() {
    const NUMBER_OF_RANDOM_NUMBERS: usize = 10;

    let mut v = Vec::with_capacity(NUMBER_OF_RANDOM_NUMBERS);

    for i in &mut v {
        *i += rand::thread_rng().gen_range(1, 2^32);
    }

    println!("{}", v.len());
}
Run Code Online (Sandbox Code Playgroud)

我的想法是,在let mut v = Vec::with_capacity(NUMBER_OF_RANDOM_NUMBERS)使用10个零初始化一个崭新的向量之后,然后使用rand::thread_rng().gen_range(1, 2^32)插入,或者我应该说,向每个零添加一个随机数。

我在这里想念什么吗?

Mar*_*cus 7

with_capacity does not initialize the values of the vector, it just allocates space for them. From the documentation:

重要的是要注意,尽管返回的向量具有指定的容量,但是向量的长度为零。有关长度和容量之间差异的说明,请参见 容量和重新分配

这意味着执行循环代码时,向量中没有任何项,因此循环总共循环零次。结果向量没有变化。