Tengo varios datos que tiene este aspecto:¿Cómo crear combinaciones de varios vectores sin bucles de hardcoding en C++?
Vector1_elements = T,C,A
Vector2_elements = C,G,A
Vector3_elements = C,G,T
..... up to ...
VectorK_elements = ...
#Note also that the member of each vector is always 3.
Lo que quiero hacer es crear todas las combinaciones de elementos en Vector1 a cabo a través de VectorK. Por lo tanto, al final, la esperanza de obtener esta salida (utilizando Vector1,2,3):
TCC
TCG
TCT
TGC
TGG
TGT
TAC
TAG
TAT
CCC
CCG
CCT
CGC
CGG
CGT
CAC
CAG
CAT
ACC
ACG
ACT
AGC
AGG
AGT
AAC
AAG
AAT
El problema que estoy teniendo ahora es que el siguiente código de la mina hace que hardcoding los bucles. Dado que la cantidad de vectores puede variarse, necesitamos una forma flexible de obtener el mismo resultado. ¿Hay alguno?
Este código mío sólo puede manejar hasta 3 Vectores (codificado):
#include <iostream>
#include <vector>
#include <fstream>
#include <sstream>
using namespace std;
int main (int arg_count, char *arg_vec[]) {
vector <string> Vec1;
Vec1.push_back("T");
Vec1.push_back("C");
Vec1.push_back("A");
vector <string> Vec2;
Vec2.push_back("C");
Vec2.push_back("G");
Vec2.push_back("A");
vector <string> Vec3;
Vec3.push_back("C");
Vec3.push_back("G");
Vec3.push_back("T");
for (int i=0; i<Vec1.size(); i++) {
for (int j=0; j<Vec2.size(); j++) {
for (int k=0; k<Vec1.size(); k++) {
cout << Vec1[i] << Vec2[i] << Vec3[k] << endl;
}
}
}
return 0;
}
¿Cómo se manejan los duplicados? es decir, si el cuarto vector es el mismo que el tercero? Además: sus vectores de entrada son de longitud 3, pero su vector de salida debe tener la longitud 'k' (si se dan k vectores de entrada)? ¿O de qué otra manera decides qué elementos tomar de qué vector de entrada? – Dane