Does the problem you're working on particularly need 2 dimensional addressing like that? Quite often you'll find that in a table each column has different semantics and each row represents another entity with the same type of attributes as the one immediately above and below. So instead of using a vector of vectors or (shudder) a raw 2D array look to see if what you've is actually a simple, 1D, array of structures. You'll find that's particularly true if you're using a database. e.g. if instead of having:
string table[5][1024];
you might find something like this represents what your app is up to a bit more.
struct thingy
{
std::string name_;
std::string favourite_blanchmange_manufacturer_;
std::string why_they_want_world_peace_;
std::string smurf_theyd_most_like_to_stangle_;
std::string this_will_never_be_used_youll_just_have_to_initialise_it_forever_;
};
thingy thingies[ 1024 ];
If you still need a 2D array come back and I'll try and add something else in here about it (but it won't be for a while). Cheers, Ash