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
;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值