446,302 Members | 1,499 Online Need help? Post your question and get tips & solutions from a community of 446,302 IT Pros & Developers. It's quick & easy.

# Multidimensional arrays

 P: n/a What's the best way of dynamically allocating a multidim array from the following: int **a = new int*[size]; a = new int[size]; .... and so on or: int (*a) = new int; by the way, how do we pass arrays delcared by the second way to functions? What really is the difference between (*a)[] and *a[].. actually i kind of understand the difference but it doesn't hit me that well.. I can't interpret what (*a)[] really means. Thanks! James Jul 19 '05 #1
4 Replies

 P: n/a "Buster" wrote in message "James" wrote in message What's the best way of dynamically allocating a multidim array from the following: int **a = new int*[size]; a = new int[size]; ... and so on Use this way if the last dimension is not a compile-time constant. I should have said 'any dimension except the first'. You can also have 'rows' (say) with different numbers of 'columns' using this idiom. or: int (*a) = new int; This way can be simpler but only works if the last dimension is a compile-time constant. And here, 'every dimension except the first'. Regards, Buster. Jul 19 '05 #2

 P: n/a "James" wrote in message news:3f********@clarion.carno.net.au... What's the best way of dynamically allocating a multidim array from the following: int **a = new int*[size]; a = new int[size]; ... and so on or: int (*a) = new int; by the way, how do we pass arrays delcared by the second way to functions? What really is the difference between (*a)[] and *a[].. actually i kind of understand the difference but it doesn't hit me that well.. I can't interpret what (*a)[] really means. Thanks! James I use a pointer to an array of pointers to an array of , like this int **array; array = new int*[width]; for (int loop=0; loop

 P: n/a James wrote in message news:3f********@clarion.carno.net.au... What's the best way of dynamically allocating a multidim array from the following: int **a = new int*[size]; a = new int[size]; ... and so on or: int (*a) = new int; http://www.parashift.com/c++-faq-lit...html#faq-16.15 http://www.parashift.com/c++-faq-lit...html#faq-16.16 -Mike Jul 19 '05 #4

 P: n/a Here's a class that creates a 2 dimensional array very easily and efficiently: template < class T, int ROW_T = 0, int COL_T = 0 > class dynamic_2d_array { public: dynamic_2d_array(int row, int col):m_row(row),m_col(col), m_data((row!=0&&col!=0)?new T[row*col]:NULL){} dynamic_2d_array():m_row(ROW_T),m_col(COL_T), m_data(new T[ROW_T*COL_T]) {if (!COL_T || !ROW_T) {int x[ROW_T] = {{ROW_T}};int y[COL_T] = {{x}};}} ~dynamic_2d_array(){if(m_data) delete []m_data;} T* operator[](int i) {return (m_data + (m_col*i));} T const*const operator[](int i) const {return (m_data + (m_col*i));} private: const int m_row; const int m_col; T* m_data; }; The above class can be delcare and used in the following maner: dynamic_2d_array < char > My_dynamic_2d_array(3, 20); My_dynamic_2d_array = 99; cout << My_dynamic_2d_array << endl; You can also use a vector > type object. For more information on this class, see the following link: http://axter.com/faq/topic.asp?TOPIC...CAT_ID=9&Topi- c_Title=How+to+create+dynamic+two%2Ddimensional+ar rays&Forum_Title=- C%2FC%2B%2B Also check out the multidimensional class in the following link: http://axter.com/faq/topic.asp?TOPIC...AT_ID=9&Topic- _Title=How+to+create+dynamic+Multi%2Ddimensional+a rrays&Forum_Title=- C%2FC%2B%2B -- Top ten Expert at Experts-Exchange Posted via http://dbforums.com Jul 19 '05 #5

### This discussion thread is closed

Replies have been disabled for this discussion. 