【发布时间】:2020-08-06 02:50:48
【问题描述】:
假设我有一棵树,我想从当前节点继续向左移动。如果当前节点没有左边,我想继续往右走。否则返回。为了做这样的事情,我必须写这样的东西:
if (node->left != nullptr)
while (node->left != nullptr)
node = node->left;
else if (node->right != nullptr)
while (node->right != nullptr)
node = node->right;
else return;
如您所见,我必须写两次条件。我可以这样写吗:
while (node->left != nullptr)
node = node->left;
else while (node->right != nullptr)
node = node->right;
else return;
如果我可以在 if 中使用 while 也会很有帮助。像这样的:
while (...) ...
else if (...) ...
else while (...) ...
else ...
编辑: 刚刚意识到树的例子不是一个好例子。但一般情况下我可以做这样的事情吗?
【问题讨论】:
-
只用第一个例子?
-
while不返回布尔值,因此它不能用于if条件。 -
@KenWhite 我并不是说将其用作条件。我是说将它与
if语句一起使用。 -
if语句需要条件。 -
可能有一种方法可以通过充分滥用宏和 lambdas 等来获得类似的东西。然后你就会有你喜欢的东西,但没有其他人可以轻松阅读。
标签: c++ loops if-statement while-loop conditional-statements