Possible duplicate:
How to create a cartesian product of vector vectors?
I am having some logical problems that determine how to create all combinations of elements in a 2d vector. Here I am creating a 2D vector. No size size can be accepted.
#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); } }
After creating the vector, I would like to display all possible combinations as follows:
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] = {...}
However, I had problems with the concept of the loop structure in order to do it right, where the size is βarrayβ and the elements in each submatrix are unknown / dynamic.
EDIT 1: It cannot be assumed that there are 3 arrays. Of these, array.size () :)
source share