У меня есть вектор наборов, которые содержат целые числа, как указано ниже:
std::vector<std::set<int> > vec = {{2,4},{1,3,8},{7,5}};
Диаграмма иллюстрации вышеуказанного вектора набора
| 2 | 4 |
| 1 | 3 | 8 |
| 7 | 5 |
Мне нужно пройти через элементы каждого наборавектора так, что каждый элемент набора в строке вектора посещает каждый элемент набора в следующей строке и так далее.
Например, первый элемент набора в первой строке вектора (т. Е. 2) посетит первый элемент второй строки (т. Е. 1), а затем посетит первый элемент третьей строки (т. Е. 7).Аналогично, эти обходы будут иметь следующий порядок:
First vector row and first set element -> Second vector row and first set element -> Third vector row and first set element
First vector row and first set element -> Second vector row and first set element -> Third vector row and second set element
First vector row and first set element -> Second vector row and second set element -> Third vector row and first set element
First vector row and first set element -> Second vector row and second set element -> Third vector row and second set element
First vector row and first set element -> Second vector row and third set element -> Third vector row and first set element
First vector row and first set element -> Second vector row and third set element -> Third vector row and second set element
First vector row and second set element -> Second vector row and first set element -> Third vector row and first set element
First vector row and second set element -> Second vector row and first set element -> Third vector row and second set element
First vector row and second set element -> Second vector row and second set element -> Third vector row and first set element
First vector row and second set element -> Second vector row and second set element -> Third vector row and second set element
First vector row and second set element -> Second vector row and third set element -> Third vector row and first set element
First vector row and second set element -> Second vector row and third set element -> Third vector row and second set element
Результирующий вектор должен быть вектором списка с каждым из его элементов, как показано ниже:
std::vector<std::list<int> > list = {{2,1,7},{2,1,5},{2,3,7},{2,3,5},{2,8,7},{2,8,5},{4,1,7},{4,1,5},{4,3,7},{4,3,5},{4,8,7},{4,8,5}};
Диаграмма иллюстрациирезультирующий вектор списка
| 2 | 1 | 7 |
| 2 | 1 | 5 |
| 2 | 3 | 7 |
| 2 | 3 | 5 |
| 2 | 8 | 7 |
| 2 | 8 | 5 |
| 4 | 1 | 7 |
| 4 | 1 | 5 |
| 4 | 3 | 7 |
| 4 | 3 | 5 |
| 4 | 8 | 7 |
| 4 | 8 | 5 |
Какой самый эффективный способ добиться этого в C ++?