正如我在评论中提到的那样,使用vector-of-vector来表示matrix是不现实的,原因如下:
build立起来很麻烦;
很难改变;
caching局部性不好。
这是我创build的一个非常简单的类,它将在一个vector中保存一个2Dmatrix。 这几乎是像MATLAB这样的软件做的…虽然是一个巨大的简化。
template class SimpleMatrix { public: SimpleMatrix( int rows, int cols, const T& initVal = T() ); // Size and structure int NumRows() const { return m_rows; } int NumColumns() const { return m_cols; } int NumElements() const { return m_data.size(); } // Direct vector access and indexing operator const vector& () const { return m_data; } int Index( int row, int col ) const { return row * m_cols + col; } // Get a single value T & Value( int row, int col ) { return m_data[Index(row,col)]; } const T & Value( int row, int col ) const { return m_data[Index(row,col)]; } T & operator[]( size_t idx ) { return m_data[idx]; } const T & operator[]( size_t idx ) const { return m_data[idx]; } // Simple r