int size = 10;
int arr[size] = {};
for(int i = 0; i < size; i++)
arr[i] = i;
现在我如何在代码中找到数组是否被填充。 我知道arr[size-1]=9
,但是arr[size]
和更高是什么? 如何使用if
语句比较arr[size]==?
,还是有其他方法? 我使用的是ubnutu,这是编译器g++(Ubuntu9.3.0-10Ubuntu2)9.3.0
。
当您使用原始数组时,您有责任处理内存并跟踪所写的内容。 这听起来像是std:vector
的好用法。 特别是通过使用它的reserve(size)
函数。 使用reserve可以告诉您要为数据保留多少内存,然后您可以用push_back(content)
填充该数组,用size()
检索当前填充的元素数(当然reserve只是一种优化,以避免重新分配内存,因为即使没有reserve,向量也会动态增长)。
现在我如何找到数组是否被填充
所有数组总是“填充”的。 N
元素数组包含N
元素,且不能少于此数组。
平凡类型的元素可能具有不确定的值。 没有办法发现一个值是否是不确定的。 读取不确定值的行为是未定义的。
在您的示例中,您初始化了数组的值,因此它被填充了值初始化的元素(在更改值的循环之前)。 在int
的情况下,这意味着数组用零填充。 您可以像这样测试一个元素是否为零:
if (arr[i])
// not zero
else
// is zero
但是什么是ARR(规模)和更大?
没有“arr[size]
and Beyond”,因为那些索引在数组的界限之外。 访问数组边界之外的值的行为未定义。