Generischer Vektor von Vektoren in C ++

Gibt es in C ++ eine gute Möglichkeit, einen Typ für einen generischen Vektor von Vektoren zu implementieren (oder zu fälschen)?

Ignore die Frage, wann ein Vektor von Vektoren eine gute Idee ist (es sei denn, es gibt etwas Äquivalentes, das immer besser ist). Angenommen, das Problem wird genau modelliert, und eine Matrix modelliert das Problem nicht genau. Nehmen wir auch an, dass Templated-Funktionen, die diese Dinge als Parameter verwenden, die Struktur manipulieren müssen (z. B. push_back aufrufen), damit sie nicht einfach einen generischen Typ annehmen können, der @ unterstütz[][].

Was ich machen möchte ist:

template<typename T>
typedef vector< vector<T> > vecvec;

vecvec<int> intSequences;
vecvec<string> stringSequences;

Aber das ist natürlich nicht möglich, da typedef nicht als Vorlage verwendet werden kann.

#define vecvec(T) vector< vector<T> >

ist in der Nähe und würde das Duplizieren des Typs für jede Template-Funktion, die auf Vecvecs ausgeführt wird, sparen, wäre aber bei den meisten C ++ - Programmierern nicht beliebt.