Есть ли хороший способ в С++ реализовать (или подделать) тип для общего вектора векторов?
Игнорируйте проблему, когда вектор векторов является хорошей идеей (если там нет чего-то эквивалентного, который всегда лучше). Предположим, что он точно моделирует проблему и что матрица не точно моделирует проблему. Предположим также, что шаблонные функции, принимающие эти параметры в качестве параметров, нуждаются в управлении структурой (например, вызове push_back), поэтому они не могут просто взять общий тип, поддерживающий [][]
.
Что я хочу сделать:
template<typename T>
typedef vector< vector<T> > vecvec;
vecvec<int> intSequences;
vecvec<string> stringSequences;
но, конечно, это невозможно, так как typedef не может быть запрограммирован.
#define vecvec(T) vector< vector<T> >
близок и сохранит дублирование типа в каждой шаблонизированной функции, которая работает с vecvecs, но не будет популярна у большинства программистов на С++.