【发布时间】:2020-05-15 08:09:31
【问题描述】:
受arr2D[i][j]和arr1D[i * k + j]启发,看了this post及其下的cmets,想知道一个可以改变任意数组维度的算法。
让我试着把它形式化:
输入:
一个
M-维容器A容器尺寸
D(大小)目标维度
N
输出:
如果是N > 0,则返回一个与A内容相同的N维容器B,否则返回错误代码。
注意:
您可以为 N 维容器选择任何最佳尺寸。
编辑:
我不需要任何完全可用的代码。请问有没有这样的算法?
【问题讨论】:
-
我认为这类似于将数字表示从一个基数转换为另一个基数。唯一的区别是每个维度的基础可能不同。例如,您可以将十进制数 1234 视为 4 维数组中的索引,其中每个维度的大小为 10。
-
任何代码要显示?
-
显示你迄今为止尝试过的内容。
-
出于实际目的,仅提供 X 维访问的线性
std::vector的模板化包装器就足够了,唯一的问题是当底层向量必须不同大小时该怎么办。 -
@ArdentCoder 我在 C++ 中添加了转换的答案 ...
标签: c++ arrays algorithm templates multidimensional-array