Aug 16, 2002 #1 Maurader Technical User May 8, 2002 59 CA is there a way to create a vector of vectors of vectors? and how would i initialize such a beast? Thanks!
is there a way to create a vector of vectors of vectors? and how would i initialize such a beast? Thanks!
Aug 16, 2002 #2 JOLESEN Programmer Jun 21, 2002 317 DK You could do it this way (Sorry if it wraps) : #include <vector> using namespace std; void main(void) { typedef vector<int> vec_1d_T; typedef vector<vec_1d_T> vec_2d_T; typedef vector<vec_2d_T> vec_3d_T; // <<==== This is your type vec_1d_T vec_1d; vec_2d_T vec_2d; vec_3d_T vec_3d; // Populate 1d vector : vec_1d.push_back(81); vec_1d.push_back(82); vec_1d.push_back(83); vec_1d.push_back(84); // Populate 2d vector : vec_2d.push_back(vec_1d); vec_2d.push_back(vec_1d); // Lazy programmer, reuse 1d vector // Populate 3d vector : vec_3d.push_back(vec_2d); vec_3d.push_back(vec_2d); // Lazy ... vec_3d.push_back(vec_2d); // ... // Run through 3d vector : printf("\nSize of 3d vector is %d", vec_3d.size()); // Should be 3 for(int ix1 = 0; ix1 < vec_3d.size(); ix1++) { printf("\n\n%d. 2d vector : size = %d", ix1+1, vec_3d[ix1].size()); for(int ix2 = 0; ix2 < vec_3d[ix1].size(); ix2++) { printf("\n\n%d. 1d vector : size = %d", ix2+1, vec_3d[ix1][ix2].size()); for(int ix3 = 0; ix3 < vec_3d[ix1][ix2].size(); ix3++) { printf("\n%d. element contains %d", ix3+1, vec_3d[ix1][ix2][ix3]); } } } } You could also declare it like this : vector<vector<vector<int> > > ThreeDIM; !! Remember space between closing angles !! /JOlesen Upvote 0 Downvote
You could do it this way (Sorry if it wraps) : #include <vector> using namespace std; void main(void) { typedef vector<int> vec_1d_T; typedef vector<vec_1d_T> vec_2d_T; typedef vector<vec_2d_T> vec_3d_T; // <<==== This is your type vec_1d_T vec_1d; vec_2d_T vec_2d; vec_3d_T vec_3d; // Populate 1d vector : vec_1d.push_back(81); vec_1d.push_back(82); vec_1d.push_back(83); vec_1d.push_back(84); // Populate 2d vector : vec_2d.push_back(vec_1d); vec_2d.push_back(vec_1d); // Lazy programmer, reuse 1d vector // Populate 3d vector : vec_3d.push_back(vec_2d); vec_3d.push_back(vec_2d); // Lazy ... vec_3d.push_back(vec_2d); // ... // Run through 3d vector : printf("\nSize of 3d vector is %d", vec_3d.size()); // Should be 3 for(int ix1 = 0; ix1 < vec_3d.size(); ix1++) { printf("\n\n%d. 2d vector : size = %d", ix1+1, vec_3d[ix1].size()); for(int ix2 = 0; ix2 < vec_3d[ix1].size(); ix2++) { printf("\n\n%d. 1d vector : size = %d", ix2+1, vec_3d[ix1][ix2].size()); for(int ix3 = 0; ix3 < vec_3d[ix1][ix2].size(); ix3++) { printf("\n%d. element contains %d", ix3+1, vec_3d[ix1][ix2][ix3]); } } } } You could also declare it like this : vector<vector<vector<int> > > ThreeDIM; !! Remember space between closing angles !! /JOlesen