如何测试是否定义了数组元素(其中元素可以定义为0)?

时间:2015-11-22 17:47:47

标签: c++ arrays

免责声明:我对C ++很陌生,所以如果这是一个愚蠢的问题,我很抱歉!

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

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

2 个答案:

答案 0 :(得分:2)

解决问题的最典型方法"我的数组中的事物数量没有提前修复"是有一个变量来跟踪数组中实际有多少东西。然后,你只需要循环那么多东西。

由于您添加了C ++标记,您可以(并且应该)使用gen.Task类来管理所有内容 - 您甚至可以获得超过1000的额外好处你应该碰巧拥有更多元素。

(除此之外:如果你坚持坚持使用一个1000长的阵列,你真的应该确保你做了一些适当的事情,如果你真的得到超过1000个数据点)

答案 1 :(得分:0)

您可以使用像nan这样的标记值(即非数字)来初始化数组:

double array[1000];
std::fill(std::begin(array), std::end(array), 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]);
}

LIVE DEMO