gpt4 book ai didi

C++ HDF5 使用数据集的维度作为 const int

转载 作者:行者123 更新时间:2023-11-28 05:05:57 25 4
gpt4 key购买 nike

我想使用我的 HDF5 数据集的维度来创建一个数组。我正在使用以下代码查找数据集的维度。

#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
}

但是,当我尝试使用

创建数组时
double myArr[xrows*yrows];

我收到一条错误消息,指出 xrows 和 yrows 不是常量值。我该如何解决这个问题?

最佳答案

double array[c] 仅在 c 是常量值时有效:

const int c = 10;
double array[c]; //an array of 10 doubles

c 是动态的时,您可以使用 new:

int c = 5;
c *= 2; //c=10
double *array = new double(c);

关于C++ HDF5 使用数据集的维度作为 const int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44789168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com