I’m writing some code against a C++ API that takes vectors of vectors of vectors, and it’s getting tedious to write code like the following all over the place:
vector<string> vs1; vs1.push_back('x'); vs1.push_back('y'); ... vector<string> vs2; ... vector<vector<string> > vvs1; vvs1.push_back(vs1); vvs1.push_back(vs2); ... vector<vector<string> > vvs2; ... vector<vector<vector<string> > > vvvs; vvvs.push_back(vvs1); vvvs.push_back(vvs2); ...
Does C++ have a vector literal syntax? I.e., something like:
vector<vector<vector<string>>> vvvs = { { {'x','y', ... }, ... }, ... }
Is there a non-builtin way to accomplish this?
In C++0x you will be able to use your desired syntax:
But in today’s C++ you are limited to using boost.assign which lets you do:
… or using Qt’s containers which let you do it in one go:
The other semi-sane option, at least for flat vectors, is to construct from an array: