I know that std::vector internally stores it\'s data contiguously (unless it is std::vector) both in the old C++03
To answer your final question: No. The elements of a vector of vectors are not stored contiguously.
Consider the following code:
std::vector > vv;
.... fill in v[0], v[1], v[2], etc
std::vector & v = vv[1];
v.push_back (23);
If they were all stored contiguously, then this would cause each element in vv[2], vv[3], etc to move. How would that possibly work, since you're just affecting a single vector 'v'?