【发布时间】:2010-08-21 07:49:17
【问题描述】:
我希望获取任意数量的列表(例如 [2, 1, 4 . . . .], [8, 3, ...], . . .)并从每个列表中选择数字以便生成所有排列。例如:
[2, 8, ...], [2, 3, ...], [1, 8, ...], [1, 3, ...], [4, 8, ...], [4, 3, ...], ...
这很容易使用嵌套的 for 循环来完成,但由于我希望它接受任意数量的列表,因此 for 循环似乎必须进行硬编码。每个列表一个。此外,由于我的程序可能会生成数万个排列,我想一次生成一个排列(而不是一次性计算它们并将结果存储到向量中)。有没有办法以编程方式完成此任务?
由于列表的数量在编译时是已知的,我想也许我可以使用基于模板的元编程。然而,这似乎很笨拙,也不符合“一次一个”的要求。有什么建议吗?
【问题讨论】:
-
我相信,通常未知数量的 for 循环嵌套在简单的递归中。
标签: c++ nested metaprogramming permutation