我想看看有多少數字比向量中的前一個數字大。到目前為止,這是我的代碼:
fn get_result(depths: &Vec<u32>) {
let mut result: Vec<u32> = Vec::new();
for (idx,num) in depths.iter().enumerate() {
if depths[idx - 1] > depths[idx] {
result.push(depths[idx]);
}
}
println!("{:?}", result);
}
當我運行它時,它給了我以下錯誤:
thread main panicked at 'attempt to subtract with overflow'
我知道這是由 depths[idx - 1] 引起的,但我不完全確定如何跟蹤以前的索引。
uj5u.com熱心網友回復:
您還可以zip使用一些迭代器來檢查對:
for (a, b) in depths.iter().zip(depths.iter().skip(1)) {
if a < b {
...
}
}
uj5u.com熱心網友回復:
idx - 1是無效的時候idx是一個usize帶值0。
對于第一個元素,您沒有什么可比較的。所以你應該開始迭代1:
for idx in 1..depths.len() {
if depths[idx - 1] > depths[idx] {
result.push(depths[idx]);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/371123.html
上一篇:使用字符aaryas反轉字串
