Declaring and initializing multi-dimensional arrays in C++ can be done not just by way of traditional pointer arithmetic, but using the STL / Boost libraries as well. Here are some examples:
2D arrays using std::vector
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include <iostream> #include <vector> using namespace std; int main() { int x = 5; int y = 5; int count = 0; vector<vector< int >> Set( x, vector< int >( y ) ); for ( int i = 0; i < x; i++ ) { for ( int j = 0; j < y; j++ ) { Set[ i ][ j ] = count++; } } for ( int i = 0; i < x; i++ ) { copy( Set[ i ].begin(), Set[ i ].end(), ostream_iterator< int >( cout, " " ) ); cout << endl; } return 0; } |
3D Arrays using Boost
Lifted directly from the Boost User Documentation:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include "boost/multi_array.hpp" #include <cassert> int main() { // Create a 3D array that is 3 x 4 x 2 typedef boost::multi_array< double , 3> array_type; typedef array_type::index index; array_type A( boost::extents[ 3 ][ 4 ][ 2 ] ); // Assign values to the array elements int values = 0; for (index i = 0; i != 3; ++i) for (index j = 0; j != 4; ++j) for (index k = 0; k != 2; ++k) A[i][j][k] = values++; // Verify values int verify = 0; for (index i = 0; i != 3; ++i) for (index j = 0; j != 4; ++j) for (index k = 0; k != 2; ++k) assert (A[i][j][k] == verify++); return 0; } |