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::beginstd::end实际上可以工作(即,数组实际上不是指针)。

对于完全C ++ 11之前的解决方案,您可以使用std::find_if,如果您不想编写自己的谓词,则可以使用现已弃用的std::bind2ndstd::greater函子来绑定0:

int *end = masivs[0] + 9;
fail = (std::find_if(masivs[0], end, std::bind2nd(std::greater<int>(), 0)) != end);

10-04 15:10