C++ Notes: Example - insert

When you want to add an element to a particular position in an array, shift all elements in and above that position up one position.

Using subscripts

void insert(int a[], int& n, int maxsize, int index, int key) {
   // function:
   //    Inserts key at a[index], shifting other values up as necessary.
   //    Updates number of elements in a.
   // parameters:
   //    a       inout  array of values.
   //    n       inout  number of values in a, a[0]..a[n-1]
   //    maxsize in     maximum number of elements that can fit in a
   //    index   in     position to insert at
   //    key     in     value to insert.
   // returns: nothing
   
   if (index < 0 || index > maxsize-1) {
      ; // ERROR - return special value, halt, throw exception, or expand array.
   }
   // Move all elements up one position.  i is destination.
   for (int i=n; i>index; i--) {
       a[i] = a[i-1];
   }
   a[index] = key;  // put value in vacated position
   n++;             // update count of items in a
   return;
}

Using pointers

void insert(int* a, int& n, int maxsize, int index, int key) {
   if (index < 0 || index > maxsize-1) {
      ;// ERROR - return special value, halt, throw exception, or expand array.
   }
   int* dest = a+index;
   int* tail = a+n;
   while (tail > dest) {
       *tail = *(tail-1);
       tail--;
   }
   *dest = key;  // put value in vacated position
   n++;          // update count of items in a
   return;
}