For loop 如何通过索引更改元素的vec值?
我的例子不起作用。如何正确更改值?您的索引位于引用后面,并且它的类型必须为For loop 如何通过索引更改元素的vec值?,for-loop,vector,rust,For Loop,Vector,Rust,我的例子不起作用。如何正确更改值?您的索引位于引用后面,并且它的类型必须为usize,因此请确保对其进行分解: let mut vec1 = vec![0,0,0,0]; let vec2 = vec![1,3,2,0]; for v in vec2.iter(){ vec1[v] += 1; } 为了安全起见,将v显式转换为usize: for &v in vec2.iter(){ vec1[v] += 1; } .这将运行并打印[1,1,1,1]: fn main(
usize
,因此请确保对其进行分解:
let mut vec1 = vec![0,0,0,0];
let vec2 = vec![1,3,2,0];
for v in vec2.iter(){
vec1[v] += 1;
}
为了安全起见,将v
显式转换为usize
:
for &v in vec2.iter(){
vec1[v] += 1;
}
.这将运行并打印
[1,1,1,1]
:
fn main(){
设mut vec1=vec![0,0,0,0];
设vec2=vec![1,3,2,0];
对于vec2.iter()中的v{
vec1[*v]+=1;
}
dbg!(vec1);
}
修复程序正在添加
&
<代码>使用时可以被删除而不生效。@JohnKugelman-Hmm,很有趣。这是最新的变化吗?我想这个答案的第一个状态是准确的。是的,可以删除,但可能会在这里解释原因?因为当您将v
作为索引vec2
时,其类型将被推断为Vec
,如果将vec2
定义为与Vec
明确类似的Vec
则不起作用,除非您想指出:IMO明确定义v2
的类型Vec
将是最安全的,因为v2
保留索引。
for &v in vec2.iter(){
vec1[v as usize] += 1;
}