История изменений
Исправление zx_gamer, (текущая версия) :
Ни в C, ни в C++ так никто не пишет.
Код должен +- быть такой:
#define SIZE_X 100
#define SIZE_Y 100
#define AT2D(ARRAY, X, Y) ARRAY[(X) + (Y)*SIZE_X]
int
main (void)
{
int* array = malloc(sizeof(int) * SIZE_X * SIZE_Y);
if (!array)
{
perror("Array allocation error");
exit(1);
}
AT2D(array, 3, 4) = 5;
free(array);
return 0;
}
А на C++ соответственно +- такой:
template<class T>
class Matrix2D
{
private:
Vector<T> m_data;
const size_t m_x_size, m_y_size;
public:
Matrix2D (size_t x, size_t y) : m_x_size(x), m_y_size(y), m_data(x*y)
{
}
T& operator() (size_t x, size_t y)
{
return m_data[m_x_size*y + x];
}
T operator() (size_t x, size_t y) const
{
return m_data[m_x_size*y + x];
}
};
Исходная версия zx_gamer, :
Ни в C, ни в C++ так никто не пишет.
Код должен +- быть такой:
#define SIZE_X 100
#define SIZE_Y 100
#define AT2D(ARRAY, X, Y) ARRAY[(X) + (Y)*SIZE_X]
int
main (void)
{
int* array = malloc(sizeof(int) * SIZE_X * SIZE_Y);
if (!array)
{
perror("Array allocation error");
exit(1);
}
AT2D(array, 3, 4) = 5;
return 0;
}
А на C++ соответственно +- такой:
template<class T>
class Matrix2D
{
private:
Vector<T> m_data;
const size_t m_x_size, m_y_size;
public:
Matrix2D (size_t x, size_t y) : m_x_size(x), m_y_size(y), m_data(x*y)
{
}
T& operator() (size_t x, size_t y)
{
return m_data[m_x_size*y + x];
}
T operator() (size_t x, size_t y) const
{
return m_data[m_x_size*y + x];
}
};