produto cartesiano de vários vectores
-
18-09-2019 - |
Pergunta
perguntas semelhantes foram feitas antes, mas eu não consigo encontrar uma correspondência exata para a minha pergunta.
Eu tenho 4 vetores cada um dos quais detêm entre 200-500 4 inteiros dígitos. O número exato de elementos em cada vector varia, mas eu poderia corrigi-lo para um valor específico. Eu preciso encontrar todas as combinações possíveis dos elementos nestes 4 vetores.
por exemplo:
v1 [10, 30] v2 [11, 45] v3 [63, 56] v4 [82, 98]
então eu obter algo como isto:
[10, 11, 63, 82]; [30, 11, 63, 82]; [10, 45, 63, 82]; [10, 45, 56, 82], etc ..
Existe um nome comum para este algoritmo para que eu possa encontrar algumas referências a ele online? Caso contrário, qualquer dicas sobre como implementar isso em C ++ seria útil. O desempenho não é muito de um problema como eu só precisa executar o algoritmo de uma vez. Há algo embutido no STL?
Solução
Não muito de um algoritmo ...
for(vector<int>::const_iterator i1 = v1.begin(); i1 != v1.end(); ++i1)
for(vector<int>::const_iterator i2 = v2.begin(); i2 != v2.end(); ++i2)
for(vector<int>::const_iterator i3 = v3.begin(); i3 != v3.end(); ++i3)
for(vector<int>::const_iterator i4 = v4.begin(); i4 != v4.end(); ++i4)
cout << "[" << *i1 << "," << *i2 << "," << *i3 << "," << *i4 << "]" << endl;