确定数组是否包含全零

Determine if array contains all zeroes

我这样创建以下数组:

array<UInt16>^ temp = gcnew array<UInt16>(1000);

如何确定整个数组是否已用零填充。

我想我可以使用 TrueForAll(T) 但我不确定。

从0初始化一个计数器,然后使用for循环遍历数组,每当找到0时递增计数器,最后将计数器与数组大小进行比较,如果相等,则全为零

这应该可以正常工作(这里我使用了 LINQ):

IEnumerable<int> values = new List<int>(); // Or use any array type instead of List.

... Add your values here ...

var allAreZero = !values.Any(v => v != 0);

P.S。数组 class 继承 IEnumerable.

这是 foreach 的解决方案:

var isAllZero = true;
foreach (var value in values)
{
    if (value != 0)
    {
        isAllZero = false;
        break;
    }
}

更新

TrueForAll 和我的 LINQ 代码之间的真正区别是:LINQ 代码使用流畅的(或者也可能是查询)语法,其中 TrueForAll 只是将数组作为参数发送的普通函数。

var allElementsAreZero = temp.All(o => o == 0);

就这么简单。

它会 return 当它找到一个不满足条件的集合时,因此不一定会遍历整个集合:

"The enumeration of source is stopped as soon as the result can be determined."

https://msdn.microsoft.com/en-us/library/bb548541(v=vs.110).aspx

正在阅读C++/CLI specification,已填满 0s,因为您使用 "new-expression" 创建它并且元素类型的默认值为 0。

24.2 CLI array creation

CLI array instances are created by new-expressions containing gcnew (§15.4.6) or …

Elements of CLI arrays created by new-expressions are always initialized to their default value.