我最近为一个简单的链表写了一个实现,在我的代码中有几个地方看起来像
Node* current_node = head;
while (current_node != nullptr) {
if (current_node->data == query) {
// perform some action
break;
}
current_node = current_node->next;
}
我最近才想到我可以将其重新实现为
for (Node* current_node = head; current_node != nullptr; current_node = current_node->next) {
if (current_node->data == query) {
// perform some action
break;
}
}
我知道两者在语法上都是正确的,任何性能差异都可以忽略不计,但我想知道检查中的相等条件是否通常在 for 循环中实现?以前我只在 for 循环中使用不等式(例如:>、< 等)。哪个版本更传统/更易读?
最佳答案
通过 for
循环遍历链表并不是一个坏习惯,但您可以将其改进为:
std::list<type> list;
auto it = std::find(begin(list), end(list), query);
if (it != end(list))
// perform some action
关于c++ - 没有计数器的for循环的可读性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35188726/