Я - Майкл (первоначальный автор), теперь у меня есть удостоверение личности La-AIDA
Во-первых, спасибо всем, Boost & Fusion, где я новичок.
Для Эрика:
Одна опечатка: v [1] должно иметь N_1 записей, v [2] N_2 и так далее.
Я бы хотел STL-подобные вещи, а не C-массивы (отсутствует проверка границ без возможности добавить их).
Новый комментарий к Эрику:
Я попробовал ваше решение, оно сработало (почти, после удаления пустого запроса) немедленно!
Спасибо!
Но: мне нужно что-то вроде
for (i = 1;i < 30;i++) {
cout << s.At<i>[0] << endl;
}
то есть индекс для At <..> должен быть переменным (то есть весь смысл, чтобы можно было запустить индекс вместо обработки 30 жестко закодированных вещей отдельно)
но gcc выдает ошибку: «я» не может появляться в константном выражении
По поводу "как на Java":
AfaIk, двумерная матрица в Java - это не
int v [10] [10];
с фиксированными размерами, но что-то вроде
на телевидении;
где у вас впервые есть
v = new int[10][];
(или аналогичный синтаксис), а затем, и это точка:
v[0] = new int[1];
...
v[9] = new a[10];
, которая образует треугольную матрицу или, конечно, любую форму, которая вам нравится.
На самом деле обычная матрица 10 на 10 также требует 1 плюс 10 новых.
О самой структуре:
Эквивалентная структура данных будет
vector<int> v1;
vector<pair<int,int>> v2;
vector<int,int,int> v3;
...
vector<int[29]> v29;
где, однако, мы должны были бы обратиться к каждой из 30 частей в отдельности.
Я бы хотел сказать v[5][3][123] = 99;
установить 3-й компонент в 123-м 5-кортеже на 99, не определяя
vector<int> v[30][30];
, который бы справился, но потратил огромное пространство, так как
v[1][2..30][0..\infty] or more generally v[i][i+1..30][*]
никогда не используются.
Итак, в моей задаче у меня есть список целых, еще пар, троек, ..., 30 кортежей целых, которые должны быть отсортированы и т. Д., В пределах одной структуры, не тратя пространство .