One more way to work with 2D-arrays is the using of one vector with 2D-addressing in your own class.
Here an example:
#include <iostream>
#include <vector>
class array_2d
{
public:
array_2d(
unsigned int x,
unsigned int y )
:
m_size_x( x ),
m_size_y( y ),
// resize vector to size x*y, all elements are 0.
m_data( x*y, 0 )
{}
int
get( unsigned int x, unsigned int y ) const
{
return m_data[ x + y * m_size_y ];
}
void
set( unsigned int x, unsigned int y, int data )
{
m_data[ x + y * m_size_y ] = data;
}
private:
unsigned int m_size_x;
unsigned int m_size_y;
std::vector <int> m_data;
};
int main()
{
// 2D array 2x3.
array_2d m( 2, 3 );
// Set 2 cells into 1 and 3.
m.set( 1, 1, 1 );
m.set( 2, 0, 3 );
for( unsigned int i = 0; i < 3; ++i )
{
for( unsigned int j = 0; j < 2; ++j )
std::cout << m.get( i, j ) << " ";
std::cout << std::endl;
}
return 0;
}