在C+中运行时生成n维数组+; 我在C++中处理一个处理NETCDF文件的工具。我希望我的工具能够处理不同布局的netCDF文件。目前,我只能加载包含一维或三维数据变量的netCDF文件。我想允许n维netCDF变量。问题是,我需要将数据转换为使用原始C数组的不同格式。所以我需要能够在运行时生成n维C数组
我可以将数据存储在一维数组中,并对不同数量的维度使用不同的访问模式,但如果可能的话,我更愿意使用n维数组(它们与我想要转换的格式相比工作得更好) 我认为使用模板和typedef应该是可能的,但是我没有足够的经验来自己实现它,而不花大量的时间来学习这些概念在C+中运行时生成n维数组+; 我在C++中处理一个处理NETCDF文件的工具。我希望我的工具能够处理不同布局的netCDF文件。目前,我只能加载包含一维或三维数据变量的netCDF文件。我想允许n维netCDF变量。问题是,我需要将数据转换为使用原始C数组的不同格式。所以我需要能够在运行时生成n维C数组,c++,arrays,multidimensional-array,typedef,C++,Arrays,Multidimensional Array,Typedef,我可以将数据存储在一维数组中,并对不同数量的维度使用不同的访问模式,但如果可能的话,我更愿意使用n维数组(它们与我想要转换的格式相比工作得更好) 我认为使用模板和typedef应该是可能的,但是我没有足够的经验来自己实现它,而不花大量的时间来学习这些概念 我很感激任何帮助或想法如何解决这个问题。使用std::vector也许?“我需要能够在运行时生成n维C数组……我认为这应该可以使用模板和typedef。”问题是,C++中使用C数组需要为维度提供一个文字常数,因为C++不支持可变长度数组声明(除
我很感激任何帮助或想法如何解决这个问题。使用
std::vector
也许?“我需要能够在运行时生成n维C数组……我认为这应该可以使用模板和typedef。”问题是,C++中使用C数组需要为维度提供一个文字常数,因为C++不支持可变长度数组声明(除非编译器扩展)。这个答案可能会有帮助。请注意,它将所有数据连续存储在multi\u dim\u array::data
-astd::vector
中,您可以通过std::vector::data()
从中获取内部类C数组的地址。关于C语言中的多维数组,我用一个漂亮的草图找到了另一个答案:。(我想起了另一个暂时找不到的东西。)