我意识到sizeof(arr)/sizeof(arr[0])
返回数组的大小,而不是数组中元素的实际数量。
int main(void)
{
int a = 1;
int b = 2;
int arr[5] = {a, b};
int arrcount = sizeof(arr)/sizeof(arr[0]);
printf("Array Size: %d\n", arrcount);
return EXIT_SUCCESS;
}
arrcount
在这里等于5。在这种情况下,有没有办法在不更改数组大小的情况下使元素数量等于2
?
答案 0 :(得分:2)
我意识到
sizeof(arr)/sizeof(arr[0])
返回数组的大小,而不是数组中元素的实际数量。
当您说 数组中元素的实际数量 时,我认为您的意思是已明确初始化为零以外的其他元素的数量。
唯一的方法是迭代数组的元素并计算通过某个过滤器的元素的数量。
int count = 0;
for ( int item : arr )
{
if ( item != 0 ) // This is a filter
++count;
}
标准库为此提供了一个功能std::count_if
。
int count = std::count_if(std::begin(arr), std::end(arr),
[](int item) -> bool { return item != 0; });