How do you dynamically allocate a matrix?

前端 未结 11 953
轻奢々
轻奢々 2020-11-29 01:29

How do you dynamically allocate a 2D matrix in C++? I have tried based on what I already know:

#include 

int main(){
    int rows;
    int c         


        
11条回答
  •  离开以前
    2020-11-29 01:44

    I have this grid class that can be used as a simple matrix if you don't need any mathematical operators.

    /**
     * Represents a grid of values.
     * Indices are zero-based.
     */
    template
    class GenericGrid
    {
        public:
            GenericGrid(size_t numRows, size_t numColumns);
    
            GenericGrid(size_t numRows, size_t numColumns, const T & inInitialValue);
    
            const T & get(size_t row, size_t col) const;
    
            T & get(size_t row, size_t col);
    
            void set(size_t row, size_t col, const T & inT);
    
            size_t numRows() const;
    
            size_t numColumns() const;
    
        private:
            size_t mNumRows;
            size_t mNumColumns;
            std::vector mData;
    };
    
    
    template
    GenericGrid::GenericGrid(size_t numRows, size_t numColumns):
        mNumRows(numRows),
        mNumColumns(numColumns)
    {
        mData.resize(numRows*numColumns);
    }
    
    
    template
    GenericGrid::GenericGrid(size_t numRows, size_t numColumns, const T & inInitialValue):
        mNumRows(numRows),
        mNumColumns(numColumns)
    {
        mData.resize(numRows*numColumns, inInitialValue);
    }
    
    
    template
    const T & GenericGrid::get(size_t rowIdx, size_t colIdx) const
    {
        return mData[rowIdx*mNumColumns + colIdx];
    }
    
    
    template
    T & GenericGrid::get(size_t rowIdx, size_t colIdx)
    {
        return mData[rowIdx*mNumColumns + colIdx];
    }
    
    
    template
    void GenericGrid::set(size_t rowIdx, size_t colIdx, const T & inT)
    {
        mData[rowIdx*mNumColumns + colIdx] = inT;
    }
    
    
    template
    size_t GenericGrid::numRows() const
    {
        return mNumRows;
    }
    
    
    template
    size_t GenericGrid::numColumns() const
    {
        return mNumColumns;
    }
    

提交回复
热议问题