Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Динамический массив / 3 сообщений из 3, страница 1 из 1
20.09.2007, 09:44:09
    #34813285
pegasus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический массив
Разрабатываю grid, для хранения ячеек необходим динамический 2D массив. Вариант выделения памяти как показано ниже под все ячейки явно не подходит. В принципе его можно потом расширять, т.е. выделять новый и в него копировать значения из старого массива. Аналогично делать при добавлении новой колонки, так и для добавления новой строки. Может стоит посмотреть в сторону VirtualAlloc, т.е. зарезервировать большой участок и потом передавать физ.память отдельным участкам, но тут не понятно как расширять его в последствии при нехватке зарезервированного региона. В общем вопрос, как это реализовать???

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 //(step 1) allocate memory for array of elements of column
TGridCell** ppTmp = new (TGridCell*[nRows]);

//(step 2) allocate memory for array of elements of each row
TGridCell* pTmp = new (TGridCell[nRows * nCols]);

// Now point the pointers in the right place
for(int i= 0 ; i<nRows; ++i)
{
  *(ppTmp + i) = pTmp;
  pTmp += nCols;
}
...
Рейтинг: 0 / 0
20.09.2007, 10:01:16
    #34813340
1211212
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический массив
Так должно сработать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
//(step 1) allocate memory for array of elements of column
TGridCell** ppTmp = new (TGridCell*[nRows]);

//(step 2) allocate memory for array of elements of each row
for(int i= 0 ; i<nRows; i ++)
{
  ppTmp[i] = new TGridCell[nCols];
}
...
Рейтинг: 0 / 0
20.09.2007, 10:28:43
    #34813449
Borr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический массив
Есть TList и struct или вот так на худой конец

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
#include <vector.h>

 struct row {
           TGridCell Row;
           TGridCell Col;
        };
  vector <row> t;

//И потом 
row r
r.Row = ...
r.Col = ...
t.push_back(r);

Если я тебя правильно понял c TList то же самое
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Динамический массив / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]