Предположим, у меня есть vector<vector<vector<int> > > result
.
Единственный размер, который я знаю перед этим, это внутренний и внешний вектор, которые имеют размер k
.
, если я печатаю result
Я получаю это (для k = 3
):
i = 0
0 1 2
3 4 5
i = 1
6 7 8
9 10 11
12 13 14
i = 2
15 16 17
18 19 20
Что мне нужно сделать, это напечатать каждую комбинацию k
строк из каждого вектора векторов i
.Другими словами, мне нужен следующий вывод:
0 1 2
6 7 8
15 16 17
0 1 2
6 7 8
18 19 20
0 1 2
9 10 11
15 16 17
...
3 4 5
12 13 14
18 19 20
Надеюсь, я был уверен в желаемом выводе.Я пробовал тысячу разных циклов, пытаясь сохранить в другом vector<vector<int> >
, но пока безуспешно.Я действительно потерян, и любая помощь будет сильно оценена.
Код для генерации вышеуказанного вывода приведен здесь:
(извините, я знаю, что это ужасный код, но он былближе всего я смог продемонстрировать свою проблему в коде MCVE)
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<vector<vector<int> > > result;
int k = 3;
vector<vector<int> > randomVectors;
//I'll create seven random vectors
//In my original problem, I don't have this number beforehand
int number = 0;
for(int i = 0; i < 7; i++){
vector<int> temp;
for(int j = 0; j < k; j++){
temp.push_back(number);
number++;
}
randomVectors.push_back(temp);
}
//Vector of vector to assign to "result"
vector<vector<int> > randomVectors_0;
randomVectors_0.push_back(randomVectors[0]);
randomVectors_0.push_back(randomVectors[1]);
vector<vector<int> > randomVectors_1;
randomVectors_1.push_back(randomVectors[2]);
randomVectors_1.push_back(randomVectors[3]);
randomVectors_1.push_back(randomVectors[4]);
vector<vector<int> > randomVectors_2;
randomVectors_2.push_back(randomVectors[5]);
randomVectors_2.push_back(randomVectors[6]);
result.push_back(randomVectors_0);
result.push_back(randomVectors_1);
result.push_back(randomVectors_2);
cout << "Printing the 3D vector" << endl;
for(int i = 0; i < k; i++){
cout << "i = " << i << endl << endl;
for(int j = 0; j < result[i].size(); j++){
for(int m = 0; m < k; m++){
cout << result[i][j][m] << " ";
}
cout << endl;
}
cout << endl;
}
return 0;
}
Версия компилятора: gcc (tdm-1) 4.7.1