prodotto cartesiano di diversi vettori
-
18-09-2019 - |
Domanda
Domande simili sono state poste prima, ma non posso trovare una corrispondenza esatta alla mia domanda.
Ho 4 vettori ognuno dei quali detengono tra 200-500 4 interi cifre. Il numero esatto di elementi in ciascun vettore varia ma potrebbe risolvere a un valore specifico. Ho bisogno di trovare tutte le possibili combinazioni di elementi in questi 4 vettori.
es:
v1 [10, 30] v2 [11, 45] v3 [63, 56] v4 [82, 98]
in modo che avrei avuto qualcosa di simile:
[10, 11, 63, 82]; [30, 11, 63, 82]; [10, 45, 63, 82]; [10, 45, 56, 82], ecc ..
C'è un nome comune per questo algoritmo in modo da poter trovare alcuni riferimenti ad esso on-line? In caso contrario, qualche consiglio su attuazione del presente in C ++ sarebbe utile. Le prestazioni non è molto più di un problema in quanto ho solo bisogno di eseguire l'algoritmo di una volta. C'è qualcosa integrato nel STL?
Soluzione
Non c'è molto di un 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;