fail = 0;
if (masivs[0][0]>0 | masivs[0][1]>0 | masivs[0][2]>0| masivs[0][3]>0 |masivs[0][4]>0| masivs[0][5]>0|masivs[0][6]>0| masivs[0][7]>0|masivs[0][8]>0|masivs[0][9]>0)
{
fail = 1;
}
else {
fail = 0;
}
我需要检查第 0 行中是否有一些正元素,如果是,则需要将失败更改为 1。
最佳答案
使用std::any_of
(C++11) 清楚地表明您的意图。我假设您有一个 int
数组。但是,在 C++14 中,您可以将下面的 int
替换为 auto
,并且它适用于任何类型。
fail = std::any_of(
std::begin(masivs[0]), std::end(masivs[0]),
[](int i) {return i > 0;}
);
确保数组大小已知,以便 std::begin
和 std::end
实际工作(即数组实际上不是指针) .
对于完全预于 C++11 的解决方案,您可以使用 std::find_if
,如果您不想编写自己的谓词,则可以使用现已弃用的 std::bind2nd
与 std::greater
仿函数绑定(bind) 0:
int *end = masivs[0] + 9;
fail = (std::find_if(masivs[0], end, std::bind2nd(std::greater<int>(), 0)) != end);
关于c++ - 如何写短这个 "or"语句是不是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19122280/