如何从C中的矩阵中删除列和行? [等候接听]

loading...


-7

存在二维矩阵a [i] [j],条件是元素的数量直接在代码中给出 . 例如:i = 1,2 ... n和j = 1,2 ... m . 该矩阵应由程序员自己填充,然后通过删除列和行进行更改 .

我需要删除此矩阵中的任何行和任何列,然后显示修改后的矩阵 . 如果您知道任务的解决方案,请参阅代码形式的示例 .

loading...

2回答

  • -1

    通常我用一个小容器创建我的矩阵,它将在堆上分配它的数据 .

    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];
    

  • -1

    您可以删除这样的行:

    delete [] matrix[i];
    

    但是你不能删除列 . 如果我是你,对于列,我将使用两个for循环重新创建矩阵,不包括要从循环中删除的列 .

    这个答案将帮助您:

    C++ How to delete a specific row or column in a dynamically allocated 2d array?

评论

暂时没有评论!