c++ - 创建一个n维数的多维数组

标签 c++ arrays

我一直在考虑是否有可能让用户根据给定的数字决定一个数组应该有多少“维度”。

n 为维数,用户将输入其值。 它将创建一个 n 维数组。

示例:对于 n=5,它将创建一个名为 list 的数组,如下所示:int list[size1][size2][size3][size4][size5]。 用户仍会提及 size 变量,但这实际上是第 2 部分。

我想知道在声明数组后是否可以向数组添加更多维度。如果没有,我想找到解决这个问题的方法。

最佳答案

C++ 语言没有提供可变大小或可变维度数组。

但是,您可以创建一个类来封装这些行为。

重要的特征是尺寸。您可以使用 std::vector<int>跟踪每个维度的元素数量;例如,{3, 4, 5}表示一个三维矩阵,其中最里面维度的秩为 3,中间维度为 4,外部维度为 5。

使用模板化 vector 或双端队列为元素分配空间。所需元素的数量是维度等级的乘积。 (您可以使用 std::accumulate 和乘法运算符来计算您的排名 vector 。)

接下来,您将需要一个方法,该方法采用某个对象(例如,一个 int vector ),该对象提供访问元素所需的 MD 数组中的所有索引。您可以使用一些奇特的模板元编程来提供采用可变数量参数的重载。

除了一些非常专业的用途之外,所有这些都太过分了,例如:您正在编写类似 Mathematica 的软件,允许用户玩这些东西。

关于c++ - 创建一个n维数的多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50380933/

相关文章:

c++ - 指向整数数组的指针 C++

c - 在 C 中交换结构中的两个数组元素

c++ - 模板类 : ctor against function -> new C++ standard

c++ - 转发声明和包含

c++ - 尝试使用 vector 实现堆栈时出错

java - 数组索引越界项目欧拉问题 17

c++ - 动态规划 : Rod cutting implementation error

c++ - makefile 为不工作的目标文件创建自己的目录

java - 打印以逗号分隔的数组

python - 如何在python中删除数组的所有其他元素? (np.repeat() 的逆?)