c2vector.h

来自「文化算法的实际应用」· C头文件 代码 · 共 53 行

H
53
字号
#include <vector>
using namespace std;

template <class T>
class C2DVector
{
public:
   C2DVector():m_dimRow(0), m_dimCol(0){;}
   C2DVector(int nRow, int nCol) {
      m_dimRow = nRow;
      m_dimCol = nCol;
      for (int i=0; i < nRow; i++){
         vector<T> x(nCol);
         int y = x.size();
         m_2DVector.push_back(x);
      }
   }
   void SetAt(int nRow, int nCol, const T& value) throw(std::out_of_range) {
      if(nRow >= m_dimRow || nCol >= m_dimCol)
         throw out_of_range("Array out of bound");
      else
         m_2DVector[nRow][nCol] = value;
   }
   T GetAt(int nRow, int nCol) {
      if(nRow >= m_dimRow || nCol >= m_dimCol)
         throw out_of_range("Array out of bound");
      else
         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<int> 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 <m_dimRow; i++)
         m_2DVector[i].resize(newSize);
   }
   vector<T>& operator[](int x)    {
      return m_2DVector[x];
   }
private:
   vector< vector <T> > m_2DVector;
   unsigned int m_dimRow;
   unsigned int m_dimCol;
};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?