c++ - 如何创建动态大小的双整型数组?

标签 c++ vector matrix

我正在尝试用 C++ 创建一个通用矩阵结构,但现在我所拥有的只是

struct matrix{
    int cells[dim][dim];
}

其中 dim 是 const int。

但是我希望让事情变得更加动态,这样我就可以声明不同大​​小的矩阵。我可以通过将所有内容转换为 int vector 的 vector 来解决这个问题,但随后我会遭受巨大的速度损失。

最佳答案

您还可以对矩阵类使用单个 vector ,该 vector 效果很好,因为数据将根据基于行或列的存储而连续。例如

Struct Matrix {
    std::vector<int> cells;
    int nrows, ncols;

    Matrix(int rows, int cols) : cells(rows * cols), nrows(rows), ncols(cols) 
    {}

    int& operator()(int row, int col){
        return cells[row * ncols + col];
    }

    void resize(int rows, int cols){
        cells.resize(rows*cols);
        nrows = rows; 
        ncols = cols;
    }
}

这是一个很好的矩阵 vector 包装器,可以避免您需要使用 c 风格的东西。

关于c++ - 如何创建动态大小的双整型数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17899280/

相关文章:

c++ - 在模板函数上的 try/catch block 后返回

c++ - 是否允许为自定义数字类型专门化数学常量?

c++ - C++代码混淆中的typedef

r 指定向量中的第一个元素

C++11:不带复制构造函数的自定义基于范围的循环

C++ 遍历 3d 数组 'no match for operator='

c++ - 检查 vector 项是否不为空 C++

python - 矩阵计算产生的 numpy 数组中的舍入值

R生成具有定义行数和列数的简单整数矩阵

c++ - 透视投影与光线追踪/光线转换的效率