如何检查数组索引是否存在
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.0
或std::sqrt(-1)
或std::log(-1)
或其他在实数中没有定义值的东西,就会发生这种情况。如果您的计算产生 NaN 并将其写入数组,则此方法将充当值从未写入该值的情况。
相关文章:
- 数组索引的值没有增加
- 并行用于C++17中数组索引范围内的循环
- 数组索引重载错误
- 通过指针与数组引用扩展数组索引序列
- SIGSEGV, 分段错误. 而 printf() 数组索引的值
- 缓冲区溢出 - 数组索引越界(严重)
- 为什么C++数组索引值是有符号的,而不是围绕size_t类型构建的(或者我错了)
- 查找下一个具有真值C++的数组索引
- 在编译时自动生成用于稀疏数组索引的switch语句
- 在数组索引上引发异常
- C++ 将二维数组索引与条件语句中的函数值进行比较
- 平衡数组索引,同时从左和右对数组求和
- 为什么C ,Devstudio,数组索引工作
- 如何对同一数组索引下的结构成员进行排序?
- 我想返回数组索引,而不是数组值
- C++相当于 Python 的:用于数组索引
- 分段错误:为什么这里的数组索引越界了
- 数组索引在地图上不是整数
- 根据用户输入的每个字母添加到数组索引
- C 数组索引