int GRID[10][20]として作成された2D配列グリッドがあります。私がやりたいのは、最後の行GRID [LAST] [ALL]を削除し、配列の先頭に空白行を挿入することです。運が悪かったので、これをグーグルで検索してみました。ありがとう
1049 次
2 に答える
3
これはC++ではなく、Cです。これを行うことができます。
memmove( GRID[1], GRID, sizeof GRID - sizeof GRID[0] ); // shift the array
bzero( GRID, sizeof GRID[0] ); // zero out the first row
C ++を使用している場合は、次のようになります。
GRID.pop_back(); // remove the last row
GRID.push_front( std::vector< int >( 10 ) ); // add an initial row
またはこれ(メモリの割り当てとサイズパラメータへの依存を回避します):
rotate( GRID.begin(), GRID.end()-1, GRID.end() ); // shift the array
fill( GRID[0].begin(), GRID[0].end(), 0 ); // zero out the first row
さらに、C ++では、ベクトルの代わりにキューを使用できます。これは、必要に応じて表示されます。ただし、C ++では、多次元コンテナ(vector
またはdeque
)は、単一のメモリブロックに存在するCスタイルの配列配列とは異なり、事実上、配列へのポインタの配列、つまり不連続なメモリ構造です。
于 2009-09-13T14:28:39.617 に答える
1
配列は、固定サイズの静的構造です。探している種類のもの(挿入と削除を伴うインデックス可能な連続ストレージ)を取得するには、STLベクトルコンテナータイプを確認する必要があります。
于 2009-09-13T14:08:10.320 に答える