2013-08-07 1 views
0

Я хочу вставить 2-мерный массив в другой двумерный массив - оба являются целыми. Первый из них меньше второго, тогда нет ошибки размера. Чем больше данных, например, до середины своей, а вторая часть не имеет данных. Я хочу вставить второй массив в середине этих данных, так что мне нужно будет сбрасывать данные больше, что означает скопировать ненулевую часть по нулевым данным. Было бы полезно, если бы кто-то мог предложить связанный код самым эффективным способом. , например:C++ вставить двухмерный массив целых чисел в другой двумерный массив целого числа

int A[4][2] = {{1, 2} , {3, 4} , { 0, 0} , {0, 0} }; 
int B[2][2] = {{5, 6} , {7, 8}}; 

Я хочу, чтобы вставить В в А (между первой и второй строки) и нажмите вниз вторую строку в третьем ряду. Тогда мы имеем:

int A[4][2] = {{1, 2} ,{5, 6} , {7, 8} , {3, 4} }; 

Я хочу сделать это без использования вложенных циклов.

+3

использует 'std :: vector ' не вариант по какой-то причине? – Mgetz

+0

@ Mgetz Это может быть, но я хочу, чтобы ваша инструкция –

+0

Что вы просите сделать, и то, что вы показываете в своем примере кода, - это две разные вещи. Массив не может быть «вставлен» в другой массив. Его можно скопировать в другой массив, на который указывает другой массив и т. Д. – Mgetz

ответ

2

Массивы на C++ - это ФИКСИРОВАННЫЙ РАЗМЕР - так что в массив нельзя «нажимать» данные, меняя его размер. Вы можете копировать только материал, переписывая (часть) целевого массива, но оставляя его того же размера.

Если вы хотите сделать это, вам необходимо либо использовать что-то (как std::vector), который позволяет размер меняется, или создать новый массив нужного размера и скопировать в нее данные:

int C[6][2]; 
std::copy(A, A+2, C); 
std::copy(B, B+2, C+2); 
std::copy(A+2, A+4, C+4); 
Смежные вопросы