File: Vector.h

prepend, remove_duplicates
 Don't call constructors or operator= on the elements of this->data


 operator[], fill, copy
 When checking array boundaries, instead of
   if (n < 0 || n >= this->number_elements)	// If index out of range
 do:
   if ((unsigned long) n >= this->number_elements)
 The cast makes negative n look very large.
DONE

 operator==, position, search, push_new, remove, remove_duplicates, replace,
 replace_all
 This sits in a loop calling (*this->compare).  Instead, make this->compare
 default to NULL, and have two loops: one for the default case where
 operator== on the value type is used, and another calling (*this->compare).
operator== and search are special cases
DONE

 search, push_new, remove, remove_duplicates, replace, replace_all
 there ought to be a general purpose, protected searching method, which is
 fast (see above) used by all these methods.
Used find - DONE

 copy, push, push_new, append, prepend, insert_before, insert_after
 There needs to be a general purpose protected grow method, like in String.
 The grow method should call resize to do most of the work.
DONE

 reverse
 This could be re-written to use pointers instead of indices.
 Dividing the length by two can be eliminated, and a check for when
 the top and bottom pointers meet or cross substituted.

 remove, remove_duplicates, prepend, insert_before, insert_after
 These need to be re-written to do their work in-place (i.e. no copying
 to a temporary)  The new and delete calls should go away.
DONE - prepend left as-is because it's likely to grow the vector

 insert_before, insert_after
 There are two versions of each of these.  They should all call a common
 private method which does the real work of inserting something at some index.
DONE

 type##_vector_heap_sort
 This needs to be merged into the sort method.  There's no reason for
 this friend function to exist, and it causes an extra .o file to be
 produced by the implement script.
DONE

 sort
 Use the ansi C qsort function, instead of having one in the template.
 If you feel that the heap sort algorithm is superior, write a general
 purpose hsort function, with the same calling sequence as qsort.
 hsort can be in the library instead of the template.
DONE

 Vector<Type>(int n, Type* data)
 Write a new constructor which makes a fixed size vector which shares
 storage with the data argument
DONE
