如何在 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,例如:
#include <algorithm>
int arr[] = ...;
int n = ...;
auto end = arr + n;
if (std::find_if(arr, end, [](int i){ return i > 0; }) != end)
{
...
}
#include <algorithm>
int arr[] = ...;
int n = ...;
if (std::any_of(arr, arr + n, [](int i){ return i > 0; }))
{
...
}
#include <algorithm>
int arr[] = ...;
int n = ...;
if (std::none_of(arr, arr + n, [](int i){ return i == 0; }))
{
...
}
因此,我在 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,例如:
#include <algorithm>
int arr[] = ...;
int n = ...;
auto end = arr + n;
if (std::find_if(arr, end, [](int i){ return i > 0; }) != end)
{
...
}
#include <algorithm>
int arr[] = ...;
int n = ...;
if (std::any_of(arr, arr + n, [](int i){ return i > 0; }))
{
...
}
#include <algorithm>
int arr[] = ...;
int n = ...;
if (std::none_of(arr, arr + n, [](int i){ return i == 0; }))
{
...
}