存在二维矩阵a [i] [j],条件是元素的数量直接在代码中给出 . 例如:i = 1,2 ... n和j = 1,2 ... m . 该矩阵应由程序员自己填充,然后通过删除列和行进行更改 .
我需要删除此矩阵中的任何行和任何列,然后显示修改后的矩阵 . 如果您知道任务的解决方案,请参阅代码形式的示例 .
通常我用一个小容器创建我的矩阵,它将在堆上分配它的数据 .
template<typename T> struct tensor2t { public: tensor2t(int r, int c) : m_r(r), m_c(c), m_s(r*c), m_buf(new T[r*c]) {} virtual ~tensor2t() { delete[] m_buf; } T & operator [] (unsigned int i) { return m_buf[i]; } private: int m_r, m_c, m_s; T * m_buf; }
我不知道你为什么要从矩阵中删除东西 . 但是你可以将元素设置为NULL . 无论如何,现在你可以使用以下公式从矩阵中获取值:
对于2维使用:
auto & v = tensor2t[i + j * rows];
三维使用:
auto & v = tensor2t[i + j * rows + k * rows * cols];
您可以删除这样的行:
delete [] matrix[i];
但是你不能删除列 . 如果我是你,对于列,我将使用两个for循环重新创建矩阵,不包括要从循环中删除的列 .
这个答案将帮助您:
C++ How to delete a specific row or column in a dynamically allocated 2d array?
2 回答
通常我用一个小容器创建我的矩阵,它将在堆上分配它的数据 .
我不知道你为什么要从矩阵中删除东西 . 但是你可以将元素设置为NULL . 无论如何,现在你可以使用以下公式从矩阵中获取值:
对于2维使用:
三维使用:
您可以删除这样的行:
但是你不能删除列 . 如果我是你,对于列,我将使用两个for循环重新创建矩阵,不包括要从循环中删除的列 .
这个答案将帮助您:
C++ How to delete a specific row or column in a dynamically allocated 2d array?