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
#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:
#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; }