bate's blog

調べたこと実装したことなどを取りとめもなく書きます。

C++で2次元配列を動的に(その2)

段々違和感なく見ていられるようになったかな。

#include <iostream>
using namespace std;

// 2次元配列を動的に確保
template< typename T > T **newDim2Array( size_t row, size_t column )
{
	T **array = new T*[row];
	for( int i = 0; i < (int)row; ++i )
		array[i] = new T[column];
	return array;
}

// 2次元配列を解放
template< typename T > void deleteDim2Array( T **ppArray )
{
	delete [] *ppArray;
	delete [] ppArray;
}


int main()
{
	// 行と列の数を入力
	int row=0, column=0;
	cout << "行の数を入力 >";
	cin >> row;
	cout << "列の数を入力 >";
	cin >> column;

	// 2次元配列を生成
	int **array = newDim2Array<int>( row, column );

	// 代入
	int count = 0;
	for( int i = 0; i < row; ++i )
		for( int j = 0; j < column; ++j )
		{
			array[i][j] = count;
			++count;
		}

	// 表示
	for( int i = 0; i < row; ++i )
	{
		for( int j = 0; j < column; ++j )
			cout << array[i][j] << " ";
		cout << endl;
	}

	// 2次元配列を解放
	deleteDim2Array( array );

	return 0;
}