不带计数器的 for 循环的可读性

Readability of for-loops without counters

本文关键字:循环 可读性 for 计数器      更新时间:2023-10-16

我最近为一个简单的链表编写了一个实现,在我的代码中的几个点上它看起来像

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