1. The word "vector" does not name a class (that's what the compiler is saying): std::vector is a template. To name a class, provide the required paremeters, e.g. vector<int>
2. vectors are not interfaces, they are concrete implementations. They are not even polymorphic: there is no point in publicly deriving from them.
template <class T>
class array : public vector<T>
{
};
2. I don't think it's such a bad idea to inherit from std::vector. You could just "extend" the current implementation. If you use std::vector in the same way every time, why not encapsulate your handing methods to append the additional generic methods you're using to std::vector?
When I learned Qt, I found lots of methods in QString really useful. When I had to use std::string in a newer project, I really missed those methods so I extended std::string to include those methods: