C++ 如何测试是否定义了数组元素(其中元素可以定义为0)? 类来管理所有的东西,甚至可以得到额外的好处,如果超过1000个元素,它可以增长超过。

C++ 如何测试是否定义了数组元素(其中元素可以定义为0)? 类来管理所有的东西,甚至可以得到额外的好处,如果超过1000个元素,它可以增长超过。,c++,arrays,C++,Arrays,我正在尝试将数据读入1000个元素的数组(double),如果要读入的数据点少于1000个,则忽略程序其余部分的多余元素 我已经定义了一个1000个元素的数组并读入了数据,现在我想对读入数据点定义的每个元素执行一个函数。如何测试元素是否已定义?我会使用布尔代数测试,即if(array[I]){\\function},但数据点可以是任何自然数,包括零,所以我不知道这是否可行。如何解决这个问题?解决“我的数组中的事物数量没有提前固定”问题的最典型方法是使用一个变量来跟踪数组中实际有多少事物。然后,你

我正在尝试将数据读入1000个元素的数组(
double
),如果要读入的数据点少于1000个,则忽略程序其余部分的多余元素


我已经定义了一个1000个元素的数组并读入了数据,现在我想对读入数据点定义的每个元素执行一个函数。如何测试元素是否已定义?我会使用布尔代数测试,即
if(array[I]){\\function}
,但数据点可以是任何自然数,包括零,所以我不知道这是否可行。如何解决这个问题?

解决“我的数组中的事物数量没有提前固定”问题的最典型方法是使用一个变量来跟踪数组中实际有多少事物。然后,你只需重复很多事情

由于添加C++标签,您可以(也应该)使用<代码> vector < /Cuff>类来管理所有的东西,甚至可以得到额外的好处,如果超过1000个元素,它可以增长超过。


(旁白:如果您坚持使用1000长的数组,您确实应该确保在实际获得1000多个数据点的情况下采取适当的措施)

您可以使用类似NAN(即,不是数字)的哨兵值初始化数组:

然后按顺序填充数组:

array[0] = 1.2;
array[1] = 2.3;
array[2] = 3.4;
然后在满足此值后立即中断循环:

for(int i(0); i < 1000; ++i) {
  if(isnan(array[i])) break;
  function(array[i]);
}
for(int i(0);i<1000;++i){
if(isnan(数组[i])中断;
函数(数组[i]);
}

您的数组是什么类型的?您可能不能,除非您为此定义了类型。与JavaScript相反,C++没有任何<代码>未定义< /COD>值;然而,你要非常害怕这种情况在C++中经常发生,但是你可以通过
intnum
之类的东西来记录有多少成功的元素被读取。如果某个元素不在范围内,
[0,num)
[0,num-1]
中,您就会知道该元素无效。只需对数组中放入的项进行计数,并在(int I=0;I@RLW:这应该放在你的问题中,所以请编辑它!
for(int i(0); i < 1000; ++i) {
  if(isnan(array[i])) break;
  function(array[i]);
}