可能重复:
如何创建向量向量的笛卡尔积? 我有一些逻辑问题,无法确定如何生成2D向量中元素的所有组合。 在这里,我创建了一个二维向量。 不能假定任何维度的大小。
创建向量后,我想按如下方式输出所有可能的组合:
然而,我在如何概念化循环结构以正确完成此操作方面遇到了困难,其中数组的大小和每个子数组中的元素都是未知/动态的。
编辑 1: 不能假设有3个数组。它们的数量由array.size()确定;)
如何创建向量向量的笛卡尔积? 我有一些逻辑问题,无法确定如何生成2D向量中元素的所有组合。 在这里,我创建了一个二维向量。 不能假定任何维度的大小。
#include <iostream>
#include <vector>
using namespace std;
int main() {
srand(time(NULL));
vector< vector<int> > array;
// This creates the following:
// array[0]: {0, 1, 2}
// array[1]: {3, 4, 5, 9}
// array[2]: {6, 7, 8}
for(int i=0; i<3; i++) {
vector<int> tmp;
tmp.push_back((i*3)+0); tmp.push_back((i*3)+1); tmp.push_back((i*3)+2);
if(i==1)
tmp.push_back((i*3)+6);
array.push_back(tmp);
}
}
创建向量后,我想按如下方式输出所有可能的组合:
comb[0] = {0, 3, 6}
comb[1] = {0, 3, 7}
comb[2] = {0, 3, 8}
comb[3] = {0, 4, 6}
comb[4] = {0, 4, 7}
comb[x] = {...}
然而,我在如何概念化循环结构以正确完成此操作方面遇到了困难,其中数组的大小和每个子数组中的元素都是未知/动态的。
编辑 1: 不能假设有3个数组。它们的数量由array.size()确定;)