【发布时间】:2014-11-27 16:56:08
【问题描述】:
我想创建一个Vec<T> 并为其腾出一些空间,但我不知道该怎么做,而且令我惊讶的是,官方文档中几乎没有关于这个基本类型的内容。
let mut v: Vec<i32> = Vec<i32>(SIZE); // How do I do this ?
for i in 0..SIZE {
v[i] = i;
}
我知道我可以创建一个空的Vec<T> 并用pushes 填充它,但我不想这样做,因为我并不总是知道,在索引i 处写入值时,如果一个值已经被插入到那里。出于明显的性能原因,我不想写类似:
if i >= len(v) {
v.push(x);
} else {
v[i] = x;
}
当然,我也不能使用vec! 语法。
【问题讨论】:
-
如果您正在创建一个新向量,您将知道一个值是否存在。请注意,这里的很多答案都假设您正在创建一个新向量,如果不是这种情况(从问题的第二部分看来不是),最好做更多问题中明确。与现有向量相比,新向量的答案大不相同。