c++ - 如果维度在编译时未知,如何实现多维数组?

标签 c++ multidimensional-array

我想实现一个函数,该函数获取整数数组的维度“n”作为参数。此函数还获取定义数组大小的值“k_1、k_2、...、k_n”。然后这个函数将填充这个 n 维数组。

我如何使用 C++ 高效地实现它?

例如对于 n = 3 我会使用

vector < vector < vector < int > > > array;

但是我不知道编译时的维度。

最佳答案

使用一维数组,并使用偏移量的乘法来伪造其他维度进行索引,您可以通过 vector 传递维度大小,即

std::vector<int> create_md_array(const std::vector<int> & dimensions)
{
    int size = std::accumulate(dimensions.begin(), dimensions.end(), 1, std::multiplies<int>());
    return std::vector<int>(size);
}

关于c++ - 如果维度在编译时未知,如何实现多维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4876845/

相关文章:

c++ - 如何在没有数据复制的情况下从指针创建 Eigen VectorXd 对象

c++ - 为什么当我访问一个由三个整数组成的对象时,它会从基指针而不是堆栈指针中减去?

javascript - 将本地 CSV 文件读入二维数组 - Javascript

PHP 获取多维数组中的值

c++ - 遇到简单回文程序的问题

c# - 想在 asp.net 中使用 c++ 库和 dll

c++ - 将浮点型 32 位变量类型转换为无符号整数 32 位时,会发生哪些位级更改?

c++ - 根据用户输入计算数组中的可整除数

c++ - 在c++中设置嵌套数组

java - 2D Java 数组 - 如何输入值