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?

Foi útil?

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;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top