/** * Author: Mark Larkin * * Copyright (c) 2007 Des Higgins, Julie Thompson and Toby Gibson. */ #include #include #include namespace clustalw { using namespace std; template class SquareMat { public: SquareMat():m_dimRow(0), m_dimCol(0){;} SquareMat(int size) { m_dimRow = size; m_dimCol = size; for (int i=0; i < size; i++) { vector x(size); int y = x.size(); m_2DVector.push_back(x); } } void SetAt(int nRow, int nCol, const T& value) { m_2DVector[nRow][nCol] = value; } T GetAt(int nRow, int nCol) { return m_2DVector[nRow][nCol]; } void GrowRow(int newSize) { if (newSize <= m_dimRow) return; m_dimRow = newSize; for(int i = 0 ; i < newSize - m_dimCol; i++) { vector x(m_dimRow); m_2DVector.push_back(x); } } void GrowCol(int newSize) { if(newSize <= m_dimCol) return; m_dimCol = newSize; for (int i=0; i & operator[](int x) { return m_2DVector[x]; } private: vector< vector > m_2DVector; unsigned int m_dimRow; unsigned int m_dimCol; }; }