проблема при обьявлении большого масива в С++

Тема в разделе "WASM.BEGINNERS", создана пользователем Psionic, 25 сен 2008.

  1. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Думаешь многомерный массив лежит не в плоской памяти ?
     
  2. Psionic

    Psionic Member

    Публикаций:
    0
    Регистрация:
    25 сен 2008
    Сообщения:
    156
    Partner
    Не задумывался, хотя может и стоило. Я же соображаю алгеброй.
     
  3. perez

    perez Member

    Публикаций:
    0
    Регистрация:
    25 апр 2005
    Сообщения:
    502
    Адрес:
    Moscow city
    >> std::vector - не годится, в нем лиш одно измерение как я понял

    vector<vector<int> >

    ?
     
  4. inviZ

    inviZ Сергей

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    92
    Адрес:
    Хабаровск
    Psionic
    А в чем разница-то, писать matrix[i*M + j] или matrix[j] ?

    Ну еще ты можешь, конечно, выделить память под массив указателей на строки матрицы. И для каждого указателя из этого массива выделить память под элементы строки. Т.е., допустим, если количество строк - N, а количество столбцов - M, то примерно так:
    Код (Text):
    1. int** matrix = new int*[M];
    2. for(int i = 0; i < M; ++i)
    3.     matrix[i] = new int[N];
    И потом юзать себе спокойно matrix[j] ... Но не люблю я так делать )
    Освобождать память тоже аналогично - писать не буду, думаю, это трививально.
     
  5. perez

    perez Member

    Публикаций:
    0
    Регистрация:
    25 апр 2005
    Сообщения:
    502
    Адрес:
    Moscow city
    inviZ
    +1
    Я тоже не лблю.
    К томуже если человек не умеет работать с дин. памятью, не надо ему этого.
    Psionic
    А вообще умные дяди в книжках рекомендуют использовать stl вместо обычных массивов.
    Как я и сказал выше, можно так:

    Код (Text):
    1. vector<vector<int> > vec(10);
    2. for(size_t i = 0; i < vec.size(); i++)
    3. {
    4.     vec[i].resize(20);
    5. }
    6. ..........
    7. vec[i][j] = x;
     
  6. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    STL резко увеличивает объём генерируемого кода :).
     
  7. perez

    perez Member

    Публикаций:
    0
    Регистрация:
    25 апр 2005
    Сообщения:
    502
    Адрес:
    Moscow city
    Ах да, какже Psionic в ассемблерном коде то ковыряться будет...
    Но думаю ему далеко до этого =)
     
  8. Psionic

    Psionic Member

    Публикаций:
    0
    Регистрация:
    25 сен 2008
    Сообщения:
    156
    Угу, для меня .DDL потолок програмирования =).