Gibt es eine gute Möglichkeit in C++ zu implementieren (oder fake) einen Typ für einen generischen Vektor von Vektoren?
Ignorieren Sie die Frage, wann ein Vektor von Vektoren eine gute Idee ist (es sei denn, es gibt etwas Gleichwertiges, das immer besser ist). Gehen Sie davon aus, dass er das Problem genau modelliert, und dass eine Matrix das Problem nicht genau modelliert. Gehen Sie auch davon aus, dass Funktionen, die diese Dinge als Parameter nehmen, die Struktur manipulieren müssen (z.B. durch den Aufruf von push_back), so dass sie nicht einfach einen generischen Typ als Unterstützung nehmen können. [][]
.
Was ich tun 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 nahe dran und würde die Duplizierung des Typs in jeder Schablonenfunktion, die mit Vecvecs arbeitet, ersparen, wäre aber bei den meisten C++-Programmierern nicht beliebt.