Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > динамическое создание массива


Автор: ZAVS 26.1.2006, 16:02
Привет

Как можно в C динамически создать двухменый массив??
Именно двухмерный массив а не одномерный массив указателей на одномерные массивы.

Автор: BreakPointMAN 26.1.2006, 16:27
Никак. Двумерный массив это массив массивов, т.е. массив указателей на одномерные массивы.

Автор: JackYF 27.1.2006, 03:43
Создай одномерный массив размером M*N,
а обращение к элементу [i][j] будет
выглядеть так:
a[i*N+j]

типа того.

а вообще двумерный массив - это действительно массив массивов.

Автор: threef 27.1.2006, 13:06
Код


#define linesize 3000

typedef double vector[linesize];

vector *matrix=new vector[rowcount];


Правда, длина строк будет фиксирована

Еще вариант

Код


struct matrix{
    double *data;
                 int size;
                 int M,N,CURRENT_ROW,CURRENT_COL;
           
    struct line{
          matrix* owner;
          public:
          double& operator [](int row)
          {
              owner->CURRENT_ROW=row;
              return *(owner->data+owner->CURRENT_ROW*owner->N+owner->CURRENT_COL);
          }
    } redirector;
    matrix(int m,int n):
    M(m),N(n),size(m*n),CURRENT_ROW(1),CURRENT_COL(1)
                {
                     data=new double[size];
                     redirector.owner=this;
                }
    line& operator[](int col)
    {
        CURRENT_COL=col;
        return redirector;
    }   
 
    ~matrix(){delete []data;};
}


Тут длина строк не фиксирована, но это C++

Автор: pablo 27.1.2006, 15:20
Вот http://forum.vingrad.ru/index.php?showtopic=80546 ещё несколько предложений по поводу многомерного массива


Автор: BreakPointMAN 27.1.2006, 18:21
Если уж на то пошло, то:
http://vingrad.ru/CPP-MAIN-002457
http://vingrad.ru/CPP-ART-CPP-002282

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)