STL二维数组

#include    <   vector   >  
None.gif 
using       namespace    std;
None.gif
None.giftemplate 
  <   class    T   >  
None.gif 
class    C2DVector
ExpandedBlockStart.gif
  {
InBlock.gif public :
ExpandedSubBlockStart.gif   C2DVector():m_dimRow( 0 ), m_dimCol( 0 ) {;} 
ExpandedSubBlockStart.gif    C2DVector( int  nRow,  int  nCol)  {
InBlock.gif      m_dimRow  =  nRow;
InBlock.gif      m_dimCol  =  nCol;
ExpandedSubBlockStart.gif       for  ( int  i = 0 ; i  <  nRow; i ++ ) {
InBlock.gif         vector < T >  x(nCol);
InBlock.gif          int  y  =  x.size();
InBlock.gif         m_2DVector.push_back(x);
ExpandedSubBlockEnd.gif      } 

ExpandedSubBlockEnd.gif   } 

ExpandedSubBlockStart.gif     void  SetAt( int  nRow,  int  nCol,  const  T &  value)  throw (std::out_of_range)  {
InBlock.gif       if (nRow  >=  m_dimRow  ||  nCol  >=  m_dimCol)
InBlock.gif          throw  out_of_range( " Array out of bound " );
InBlock.gif       else 
InBlock.gif         m_2DVector[nRow][nCol]  =  value;
ExpandedSubBlockEnd.gif   } 

ExpandedSubBlockStart.gif    T GetAt( int  nRow,  int  nCol)  {
InBlock.gif       if (nRow  >=  m_dimRow  ||  nCol  >=  m_dimCol)
InBlock.gif          throw  out_of_range( " Array out of bound " );
InBlock.gif       else 
InBlock.gif          return  m_2DVector[nRow][nCol];
ExpandedSubBlockEnd.gif   } 

ExpandedSubBlockStart.gif     void  GrowRow( int  newSize)  {
InBlock.gif       if  (newSize  <=  m_dimRow)
InBlock.gif          return ;
InBlock.gif      m_dimRow  =  newSize;
ExpandedSubBlockStart.gif       for ( int  i  =   0  ; i  <  newSize  -  m_dimCol; i ++ )    {
InBlock.gif         vector < int >  x(m_dimRow);
InBlock.gif         m_2DVector.push_back(x);
ExpandedSubBlockEnd.gif      } 

ExpandedSubBlockEnd.gif   } 

ExpandedSubBlockStart.gif     void  GrowCol( int  newSize)  {
InBlock.gif       if (newSize  <=  m_dimCol)
InBlock.gif          return ;
InBlock.gif      m_dimCol  =  newSize;
InBlock.gif       for  ( int  i = 0 ; i  < m_dimRow; i ++ )
InBlock.gif         m_2DVector[i].resize(newSize);
ExpandedSubBlockEnd.gif   } 

ExpandedSubBlockStart.gif    vector < T >&   operator []( int  x)     {
InBlock.gif       return  m_2DVector[x];
ExpandedSubBlockEnd.gif   } 

InBlock.gif private :
InBlock.gif   vector <  vector  < T >   >  m_2DVector;
InBlock.gif   unsigned  int  m_dimRow;
InBlock.gif   unsigned  int  m_dimCol;
ExpandedBlockEnd.gif
;

你可能感兴趣的:(STL二维数组)