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