c++ - 从数组中获取一个 block

标签 c++ arrays

我有以下数组

   75.7740   70.6046   82.3458   43.8744   48.9764
   74.3132    3.1833   69.4829   38.1558   44.5586
   39.2227   27.6923   31.7099   76.5517   64.6313
   65.5478    4.6171   95.0222   79.5200   70.9365
   17.1187    9.7132    3.4446   18.6873   75.4687

我想得到例如从 (1,1) 到 (2,2) 子数组

3.1833   69.4829  
27.6923   31.7099 

当我在子数组上进行一些计算时,我也想影响大数组。

例如我有一个矩阵类

template<class T>
class Matrix {
private:
    unsigned rows, cols;
    T* data_;
        .....
}

测试

MatrixXd u(5, 5);
MatrixXd d(2, 2);
....
u.subblock(1,1,2,2) = d*d
or
u(1,1,2,2) = d*d

我已经重载了一些运算符,如 ()/*-+ 等,但我不知道我是否可以操作子数组。

最佳答案

u.subblock(1,1,2,2) = d*d

要得到像上面这样的一行,你可以定义一个辅助类:

template<class T>
class SubMatrix {
private:
    Matrix<T> *origin;
    unsigned int sr, sc, er, ec; // start and end row and column
        .....
};

然后您的 Matrix::subblock 函数返回一个 SubMatrix,其中 operator = 重载了一个 Matrix (一个采用 SubMatrix 和可能的其他运算符,一个 operator =Matrix 中采用 SubMatrix 等) .

然后,该辅助类将在给定窗口从原始矩阵读取/写入。

关于c++ - 从数组中获取一个 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13531332/

相关文章:

c++ - 将 cout 输出到 std::string

c++ - 是否有类似 MATLAB 的 OpenCV 颜色条的东西?

c++ - 如何安装系统范围的 nuget 包?

c++ - 如何检查 cpp 中给定输入的数据类型?

javascript - 将不同数据类型的类型化数组合并到单个数组缓冲区中

javascript - JSON 数组转换为 JS 对象数组

c++ - 如何传递 const 对象

c++ - 使用 "Sort K number of elements based array"算法的数组中的第 K 个最大数

python - 获取值大于前一个元素的 numpy 1d 数组的索引

c++ - 将数组复制到函数 C++