Нет никакого «нормального» решения для вашей проблемы, но только упомянутые «обходные пути».
Ситуация в том, что ваш контейнер блоков заполнит доступное пространство до максимальной доступной / настроенной, а затем разбивает все внутренние блоки на следующую строку, что приведет к переполнению контейнера. Также с другими конфигурациями, такими как плавание, это будет одинаковое поведение. Вот как работает рендеринг - каждый раз жадно в пространстве, чтобы вычислить поведение внутренних элементов.
Возможно, будущее Flexboxes сделает это возможным - но я не прочитал полные спецификации. Просто догадаться ...
Во-первых, я согласен со всеми комментариями к вашему вопросу о форматировании, отладке, макросах и т. Д. Но я постараюсь объяснить вам, как новичку, что происходит в коде.
Так вы бы определили вектор типа int:
vector<int> v;
Это определит массив из 10 векторов типа int:
[ 111]Вот что делает ваша программа: она определяет массив, содержащий 10 векторов.
При доступе к данным с помощью этого:
v[n][i]
То, что происходит, это то, что вы берете n-й вектор в массиве и получаете i-й элемент в этом векторе.
Когда вы делаете это:
v[a].PB(b);
вы берете a'-й вектор в массиве и добавляете число b к концу его как новый элемент в этом векторе.
После этого вам просто нужно тщательно следовать логике кода. Я бы посоветовал использовать отладчик для пошагового выполнения кода и проверки значений переменных при этом.
Но в основном пользователь вводит значения, которые программа затем добавляет к векторам сложным образом (без защиты для пользователя, вводящего значения вне диапазона - очень опасно). Затем программа распечатывает все значения первых 5 векторов.