Декартово произведение нескольких векторов
-
18-09-2019 - |
Вопрос
подобные вопросы задавались и раньше, но я не могу найти точного ответа на свой вопрос.
У меня есть 4 вектора, каждый из которых содержит от 200 до 500 4-значных целых чисел.Точное количество элементов в каждом векторе варьируется, но я мог бы зафиксировать его до определенного значения.Мне нужно найти все возможные комбинации элементов в этих 4 векторах.
например:
v1 [10, 30] v2 [11, 45] v3 [63, 56] v4 [82, 98]
так что я бы получил что-то вроде этого:
[10, 11, 63, 82];[30, 11, 63, 82];[10, 45, 63, 82];[10, 45, 56, 82] и т.д..
Есть ли общее название для этого алгоритма, чтобы я мог найти несколько ссылок на него в Интернете?В противном случае любые советы по реализации этого на C ++ были бы полезны.Производительность не является большой проблемой, поскольку мне нужно запустить алгоритм только один раз.Есть ли что-нибудь встроенное в STL?
Решение
Не очень-то похожий на алгоритм...
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;