Возьмите структуру переменной длины (если бы это была программа real , лучше использовать массив int):
#include <vector>
struct list_of_numbers(){
int length;
int *numbers; //length elements.
};
typedef std::vector<list_of_numbers> list_nums; //just a writing shortcut
(...)
И создайте из него вектор:
list_nums lst(10); //make 10 lists.
lst[0].length = 7; //make the first one 7 long.
lst[0].X = new int[7]; //allocate it with new[]
(...)
Вышеописанное работает для g ++ в Ubuntu. Вызовы new () необходимы для избежания ошибок. Можно ли удалить первый вектор, если он больше не нужен, или новые вызовы вызовут утечку памяти? Было бы утомительно удалять () вручную все части, вызываемые с помощью new ().