Декартово произведение нескольких векторов - PullRequest
2 голосов
/ 09 марта 2010

аналогичных вопросов задавались ранее, но я не могу найти точное соответствие с моим вопросом.

У меня есть 4 вектора, каждый из которых содержит от 200 до 500 четырехзначных чисел.Точное количество элементов в каждом векторе варьируется, но я могу исправить это до определенного значения.Мне нужно найти все возможные комбинации элементов в этих 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?

1 Ответ

11 голосов
/ 09 марта 2010

Не так много алгоритма ...

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...