Re: Creating a 2D or 3D array?
 
carl wrote:
I need to create either a 2D or 3D array based on the dimension 
specified by the user. So far I just split it in two cases depending on 
the specified parameter:
[..]
But is there some more generic way to do this or is it only possible 
when splitting the code up like above?
You seem to have forgotten to mention that the sizes of your dimensions 
are the same.  Are they?  If so, you could write a template, something 
in line with
#include <vector>
   template<int N, unsigned Exp> struct Pow {
     static unsigned long const res = N * Pow<N,Exp-1>::res;
   };
   template<int N> struct Pow<N,0U> {
     static unsigned long const res = 1;
   };
   template<class T, int N, int Dims> class MyArray
   {
      std::vector<T> data;
   public:
      MyArray() : data(Pow<N,Dims>::res) {}
   };
   int main() {
     MyArray<int, 50, 3> i; // that's how you use it
   }
(filling up 'MyArray' with indexing and other functionality is left as 
an exercise)
Of course, that still leaves 'N' specified at compile-time.  So, rewrite 
this to specify it at run-time, as the argument to the constructor.  You 
won't need 'Pow' template (or, rather, you will need a different 'Pow' 
template).
Good luck!
V
-- 
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask