gpt4 book ai didi

rust - 在测试链表是否包含项目时,手动从 for 循环提前中断是否有意义?

转载 作者:行者123 更新时间:2023-11-29 08:00:14 24 4
gpt4 key购买 nike

在学习基本教程时,我遇到了这个功能:

use std::collections::LinkedList;

// ...

pub fn contains(&self, x: i32, y: i32) -> bool {
let mut ch = 0;
let list: &LinkedList<Block> = &self.body;

for block in list {
if block.x == x && block.y == y {
return true;
}
ch += 1;
if ch == list.len() - 1 {
break;
}
}

return false;
}

很明显,我可以去掉整个 if ch == list.len() - 1 部分,然后像这样写:

pub fn contains(&self, x: i32, y: i32) -> bool {
for block in &self.body {
if block.x == x && block.y == y {
return true;
}
}
return false;
}

它似乎工作正常,但也许我错过了什么?教程的作者错误地制造了不必要的开销吗?

最佳答案

正如原始“教程”版本中所写,它似乎没有查看最后一个元素。考虑一个长度为 2 的列表,其中第二个元素是您要查找的元素。

第一次比较后,ch 变为 1。它现在等于列表长度减 1,因此您在循环(如果再执行一次)找到最后一个元素。

这没有多大意义,所以我认为你的不仅更短而且正确。

关于rust - 在测试链表是否包含项目时,手动从 for 循环提前中断是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53271083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com