如何在 C++ 中检查数组是否用零填充

How to check if an array is filled with zeros in C++

因此,我在 C++ 中有一个长度为 n 的数组,我想知道它是否至少包含一个正数。我确定该数组只包含非负数。

我知道该怎么做,但我想知道是否有比数组上的 for 循环更有效或更漂亮的方法。

我有这样的东西:

bool is_empty = true;
for(int i = 0; i < n; i++) {
        if(arr[i] > 0) {
            is_empty = false;
            break;
        }
    }

如果您不想使用 for 循环,请改用 standard algorithm,例如:

std::find_if()

#include <algorithm>

int arr[] = ...;
int n = ...;

auto end = arr + n;
if (std::find_if(arr, end, [](int i){ return i > 0; }) != end)
{
    ...
}

std::any_of()

#include <algorithm>

int arr[] = ...;
int n = ...;

if (std::any_of(arr, arr + n, [](int i){ return i > 0; }))
{
    ...
}

std::none_of()

#include <algorithm>

int arr[] = ...;
int n = ...;

if (std::none_of(arr, arr + n, [](int i){ return i == 0; }))
{
    ...
}