# 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;
    }