提问者:小点点

如何在C++中找到大小为“x”的数组是否完全填充?


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


共2个答案

匿名用户

当您使用原始数组时,您有责任处理内存并跟踪所写的内容。 这听起来像是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”,因为那些索引在数组的界限之外。 访问数组边界之外的值的行为未定义。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(何在|c++|中找到|大小|x|数组|填充)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?