【发布时间】:2019-06-13 16:45:56
【问题描述】:
我正在编写一些函数,它基本上接受输入范围和一维向量。它查看向量给定值范围内的每个数字,使得:
1) 如果左边的数字是 0,他们交换位置。
2) 如果它左边的数字等于它,他们添加。
到目前为止,这还不错。当我尝试添加返回语句时出现问题:
1) 在所有次迭代完成并且在每次迭代中至少输入一个 if 条件后,它应该返回 True。
2) 所有次迭代完成并且没有输入任何条件后,它应该返回false。
现在,如果我将这些返回语句放入循环中,它们将在此处终止此函数,但这是不可取的,因为它需要先经过所有迭代。当前代码是否与此可比,还是我需要以不同的方式重做它(如果不是,return 语句可以去哪里?)
【问题讨论】:
-
return 语句放在函数的末尾(因为你必须完成循环,它还能去哪里)。您在代码中添加一个布尔变量,用于跟踪最终返回值是真还是假。
-
实际上它们不会交换,因为您用 i 处的值覆盖 j 处,然后将其分配回来。之后,两个位置都保持 j 的值。考虑使用
std::swap(v[j], v[i])
标签: c++ for-loop if-statement vector return