/* ExtendedVector is a class template  derived from STL's vector<T> class
 * template.  It extends vector<T> by adding the following operators:
 *    Constructor:  constructs an empty ExtendedVector
 *    Output (<<) and input (>>) operators
 *    LinearSearch:  searches for a value
 *    insert:  inserts a value at a particular location (index)
 *    erase:   erases a specified value
 *  If < and == are defined for T values, the following operations
 *  are also available:
 *    Sorted(): checks if the elements are sorted
 *    Sort():   sort the elements
 *
 * Written by:   Larry R. Nyhoff
 * Written for:  Lab Manual for C++: An Introduction to Data Structures
 *
 * Add descriptions of the basic operations and other documentation required 
 * by your instructor such as your name, course number, and the current date.
 *************************************************************************/

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

#ifndef EXTVEC
#define EXTVEC

template <typename T>
class ExtendedVector
{
public:

/* --- The ExtendedVector<T> constructor for ExtendedVector objects.

   Precondition:  An ExtendedVector<T> object has been declared.
   Postcondition: The object has been initialized as an empty
                    ExtendedVector<T> and with sorted data member
                    to true.
----------------------------------------------------------------------*/


// Insert prototypes of functions for input and output here


// Insert prototype of LEqDefined() here


// Insert prototype of Sorted() here


// Insert prototype of Sort() here


// Insert prototype of LinearSearch() here



/* --- insert() inserts a value to an ExtendedVector<T>.

   Receive: the ExtendedVector<T> containing this function (implicitly)
            loc, a location (index) in the ExtendedVector<T>
            value, to be inserted at location loc
   Return:  The modified ExtendedVector<T> object with value inserted
            at location loc, provided it is a legal location;
            otherwise, the object is unchanged.
----------------------------------------------------------------------*/



/* --- erase() removes a value from an ExtendedVector<T>.

   Receive: the ExtendedVector<T> containing this function (implicitly)
            a value of type T
   Return:  The modified ExtendedVector<T> object with value removed,
              provided it is found; otherwise, the object is unchanged.
-----------------------------------------------------------------------*/

};


// Insert definitions of member functions here


#endif


