Предполагая, что вы знаете точный размер каждого массива, и они известны во время компиляции, тогда сравнение - это просто memcmp()
с правильным размером.
// you somehow know the size of the array
int a[WIDTH][HEIGHT];
int b[WIDTH][HEIGHT];
bool const equal(memcmp(a, b, sizeof(int) * WIDTH * HEIGHT) == 0);
// and if defined in the same scope, you can even use:
bool const equal(memcmp(a, b, sizeof(a)) == 0);
Обратите внимание, что в моем коде предполагается, что оба массива (a и b) имеют одинаковый размер. Вы можете проверить это, прежде всего, чтобы убедиться, с броском или, может быть, утверждать, например std :: assert (sizeof (a) == sizeof (b)).
Если вы не знаете размер во время компиляции sizeof
не будет работать, так как это оператор времени компиляции, что означает, что вам нужно будет передать размеры или использовать stl
.
Вы всегда можете использовать версию 'sizeof a' –
Да. 'sizeof a' всегда доступен. Однако, если вы сделали что-то вроде 'a = new int [32]', то 'sizeof a' возвращает размер указателя, а не размер массива. –