// L-10 MCS 360 Wed 15 Sep 2010 : test_our_own_vector.cpp

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

class OurVector : public vector<double>
{
   public:

      const double& operator[](size_t index)
      {
         if(index < 0 || index >= this->size())
            throw out_of_range("wrong index");
         return (*this).at(index);
      }
};

void write ( OurVector v );
// writes the vector v of doubles

int main()
{
   OurVector numbers;
   do
   {
      double n;
      cout << "give a number (0 to exit) : ";
      cin >> n;
      if(n == 0) break;
      numbers.push_back(n);
   }
   while(true); 

   write(numbers);

   cout << "give an index : ";
   size_t k; cin >> k;
   cout << "number[" << k << "] : "
        << numbers[k] << endl;

   return 0;
}

void write ( OurVector v )
{
   for(int i=0; i < v.size(); i++)
      cout << "v[" << i << "] = "
           << v[i] << endl;
}

