devxlogo

Efficient Array Copying

Efficient Array Copying

Suppose you want to assign the contents of a two-dimensional array to another two-dimensional array:

   int weekly_hours[5][5];  // source  int another_array[5][5];  // destination

You can use a nested loop to copy every element of weekly_hours to another_array, as in this example:

   for (int i = 0; i<5; i++)  {    for (int j = 0; j < 5; j++)    {      second_array[i][j] = weekly_hours[i][j];    }  }

This technique, however, is extremely inefficient. The code iterates through every element of the arrays, tests the conditions in the for-statements, and increments the counters. Fortunately, there is a much better way to do it. Both C and C++ guarantee that elements of multidimensional arrays occupy contiguous memory addresses. In other words, the memory layout of weekly_hours is identical to the memory layout of an array of 25 int's. You can take advantage of this fact and copy the entire multidimensional array to another multidimensional array, all at once. For this purpose, you use the standard function memcpy():

   memcpy(second_array, weekly_hours, sizeof(second_array)); 

memcpy() is declared in the C header file as follows:

   memcpy(void * destination, void * source, size_t bytes); 

On many platforms, memcpy() is written in highly-optimized assembly code. Therefore, the performance gain of using memcpy() instead of nested loops can be significant.

See also  How College Students Can Shape the Future of Tech Responsibility
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist