Сначала вы пишете, что вектор ест слишком много памяти. Мы это обсуждаем 5 страниц. Потом оказывается, что "много памяти" - это один (!) лишний указатель, а на самом деле нам важна не память, а скорость аллокации.
Возможно Вас сбило с толку "(иначе достаточно вектора)" - но это имеется ввиду хранить все хвосты в отдельном векторе (а не совать вектор в каждый CData), т.е. никакого противоречия здесь нет.
В общем, как обычно, задача сформулирована через жопу.
...
Собственно, см. мой эмоциональный пост.
Откуда такая нетерпеливость? Зачем раздражаться и срываться на поросячий визг если Вы не увидели решения моментально?
Я его тоже пока не вижу, вот и хорошо, есть о чем подумать.