Я новичок в C++.
Для двумерного массива, определенного как:
boolean myArray[3][8];
и я хочу перетасовать ячейки вокруг в элементах первого измерения вокруг так, что, скажем, myArray[2][........]
копируется в myArray[2][........]
,
Я бы обычно перебирал массив с помощью вложенного цикла, который копирует каждую ячейку. Есть лучший способ сделать это? Другими словами, есть ли способ скопировать одно измерение двумерного массива в другую часть этого массива с одной командой какого-то рода?
В этом примере программа объявляет следующий 2D-массив int (вместо bool):
3 5 7 9 11 13 15 17
8 7 6 5 4 3 2 1
2 4 6 8 10 12 14 16
и демонстрирует, как переключать данные между первым и последним индексами:
#include <stdio.h>
#include <string.h>
int main()
{
int myArray[3][8] =
{
{ 3, 5, 7, 9, 11, 13, 15, 17 },
{ 8, 7, 6, 5, 4, 3, 2, 1 },
{ 2, 4, 6, 8, 10, 12, 14, 16 }
};
// Copy data from index 2 to index 0
int bkup[8] = { 0 };
memcpy(bkup, myArray[0], sizeof(myArray[0]));
memcpy(myArray[0], myArray[2], sizeof(myArray[2]));
memcpy(myArray[2], bkup, sizeof(bkup));
// Print array content to the screen
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 8; j++)
printf("%d ", myArray[i][j]);
printf("\n");
}
return 0;
}
Вывод:
2 4 6 8 10 12 14 16
8 7 6 5 4 3 2 1
3 5 7 9 11 13 15 17
true
или false
и все будет хорошо.
std::swap(myArray[0], myArray[2]);
Вы можете использовать:
memmove(&myArray[2], &myArray[2][2], 4);
Скопировать некоторые байты из второго массива в начало самого себя.
boy I hope I haven't made this unintelligible
- ну, может быть, если ваш источник и цель не были идентичны ...memcpy(myArray[0], myArray[2], 8);
скопировать с 1 на другой. Это то, что вы ищете?