私のHDF5データセットの次元を使用して配列を作成したいと思います。私は私のデータセットの寸法を見つけるために次のコードを使用しています。私はC++ HDF5データセットの次元をconst intとして使用する
double myArr[xrows*yrows];
を使用してアレイを作成しようとすると
#include <iostream>
#include <string>
#include <vector>
#include <iomanip>
#include <typeinfo>
#include "H5cpp.h"
using namespace H5;
int main() {
std::string sFileName;
sFileName = "test.h5";
const H5std_string FILE_NAME(sFileName);
const H5std_string DATASET_NAME("timestep:5.0");
H5File file(FILE_NAME.c_str(), H5F_ACC_RDONLY);
DataSet dataset = file.openDataSet(DATASET_NAME.c_str());
DataSpace dataspace = dataset.getSpace();
int rank = dataspace.getSimpleExtentNdims();
// Get the dimension size of each dimension in the dataspace and display them.
hsize_t dims_out[2];
int ndims = dataspace.getSimpleExtentDims(dims_out, NULL);
std::cout << "rank " << rank << ", dimensions " <<
(unsigned long)(dims_out[0]) << " x " <<
(unsigned long)(dims_out[1]) << std::endl;
const int xrows = static_cast<int>(dims_out[0]); //120
const int yrows = static_cast<int>(dims_out[1]); //100
std::cout << xrows * yrows << std::endl; //12000
double myArr[xrows] // this also produces an error saying xrows is not a constant value
}
はしかし、私はxrowsとyrowsは一定値ではありませんというエラーを取得します。これを回避するにはどうしたらいいですか?
xrowsとyrowsは定数値、とてもはずのxrowsです* yrowsはとして一定でありますまあ? –
いいえ。計算が完了すると、 'const'は失われます。 'const'はコンパイラの問題です。微積分は実行時に行われます。 – Ripi2
私はdouble myArr [xrows]を試してもうまくいきません。それは私が1と定義しても、xrowsは定数ではないと考えます。 –