繁体   English   中英

如何检查数组索引是否存在

[英]How to check if array index exists

我有一个指针* double精度数组,基本上,它们以任何顺序索引。

例如,

double[0][0] = 80.0
double[3][0] = 56.8
double[4][0] = 56.7

例如,如何检查double[1][2]存在,如果不存在则创建一个。

我不打算使用vectors或任何'fancy' ,而只是使用简单数组。

好吧,如果您真的想使用纯数组(为什么?),除了依靠魔术值之外,您无能为力。 我建议std::numeric_limits<double>::quiet_NaN() (NaN =不是数字)。 也就是说:

#include <algorithm>
#include <limits>

double data[10][20]; // maximum dimensions mandatory with arrays. There's
                     // no way around that, and you can't grow it later.

std::fill(data[0], data[0] + 10 * 20, std::numeric_limits<double>::quiet_NaN());

然后,您可以稍后检查数组中是否有真实值,如下所示:

if(!std::isnan(data[1][2])) {          // #include <cmath> for std::isnan
  // oh, look, there's a value here!
} else {
  // Nothing here yet. Better fill it
  data[1][2] = 123.0;
}

警告:如果您的计算本身可能会产生NaN值,则您将被这种方式搞砸了。 例如,如果您尝试计算0.0 / 0.0std::sqrt(-1)std::log(-1)或其他在实数中没有定义值的东西,就会发生这种情况。 如果您的计算产生NaN并将其写入数组,则此方法的作用就好像从未在其中写入值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM