Vector of vectors in contiguous memory
When it comes to multidimensional vectors I usually suggest two approaches.
1. vector/array (C++11 and later)
This only works, when the inner dimensions are fixed and only the outer is runtime dynamic. In the end it comes down to something like this:
std::vector&lt;std::array&lt;T, N&gt;&gt; field;

In your case a Vector3d would either derive from std::array&lt;double, 3&gt; or contain one.
2. simple vector
This approach simply creates a one dimensional vector with X * Y size.
The element (x, y) can then be addressed with vec[y * X + x]. This works also with the older C++ standard. Although I think this solution might not work in your setup.
Bonus
I just want to highlight @Yakk's comment. Your Vector3d could look like this:
class Vector3d
{
public:
    // stuff
    // ...
private:
    double components_[3];
};

This way the memory would also be contigous.