牵着老婆满街逛

严以律己,宽以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

STL二维数组

#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;
}
;

posted on 2006-09-12 20:02 杨粼波 阅读(1804) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理