Я хочу взять произвольное количество списков (например, [2, 1, 4...], [8, 3,...],...) и выбирать номера из каждого списка, чтобы сгенерировать все перестановки. Например:.
[2, 8,...], [2, 3,...], [1, 8,...], [1, 3,...], [4, 8,...], [4, 3,...], ...
Это легко выполнить с помощью вложенных for-loops, но поскольку я хотел бы, чтобы он принял произвольное количество списков, кажется, что for-loops должны быть жестко закодированы. Один для каждого списка. Кроме того, поскольку моя программа, скорее всего, сгенерирует множество десятков тысяч перестановок, я бы хотел создать единую перестановку за раз (вместо того, чтобы вычислять их все за один раз и сохранять результат в вектор). Есть ли способ сделать это программно?
Поскольку количество списков известно во время компиляции, я подумал, может быть, я мог бы использовать мета-программирование на основе шаблонов. Однако это кажется неуклюжим, а также не соответствует требованиям "по одному". Любые предложения?