I think that you are confused by the name vector. Your Vector struct clearly describes a three-dimensional geometric vector. Informatics-people use the word vector as a synonym for "array". Actually, the STL vector class is an array container class. If you REALLY want to implement your Vector op top of the STL vector, I'd do this:
Code:
#include <vector>
class Vector : protected std::vector<double>
{
Vector()
{push_back(0.0); push_back(0.0); push_back(0.0);} //allocate three elements
double &x(){return (*this)[0];}
double &y(){return (*this)[1];}
double &z(){return (*this)[2];}
};