0

n 行 p 列の 2 次元配列にデータがあります。

例えば:

vector<vector<int> > dynamicArray(ROWS, vector<int>(COLUMNS));

for(int i = 0;i < dynamicArray.size();++i){
      for(int j = 0;j < dynamicArray[i].size();++j){
           dynamicArray[i][j] = i*j;
      }
}

ここで、この配列にいくつかの列を追加したいと思います。私は次のことを試しました(すべて10の列を配列に追加します)が、失敗した場合:

for(int i=0; i < dynamicArray.size(); i++){
    dynamicArray[i].push_back(10);
}

これを行う方法はありますか?

ありがとう!

4

1 に答える 1

1

コードを実行したところ、列が正常に追加されました。失敗したってどういうこと?

個人的には、1 つのベクトルを使用して 2 次元配列を 1 つにフラット化します。

class DynamicMatrix
{
   vector<int> array;
   int rows;
   int columns;
   public:

   DynamixMatrix(int r,int c):array(vector<int>(r*c)),rows(r),columns(c){};

   int getValue(int x,int y) { return array[x+y*c];}
   int setValue(int x,int y, int v) { array[x+y*c] = v;}

   void AddRow()
   {
        rows++;
        array.resize(rows*columns);
   }
   void AddColumn()
   {
        column++;
        array.resize(rows*columns);
   }

} 
于 2012-05-26T05:19:49.547 に答える