Smart |
Отправлено: 10.12.2005, 21:16 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 35
|
Приветствую Вас, господа!
В проекте решено использовать трехмерный массив типа:
AnsiString S [A] [B] [C].
Размеры [A] и [B] заранее известны и могут быть установлены при инициализации.
Размер [C] в зависимости от входящих данных может колебаться в весьма широких пределах: от 300 до 3000.
Возможно ли динамическое указание размера массива?
Или не заморачиваться и поставить максимальный размер [C], да еще и с запасом?
И как в этом случае размер запаса отразится на ресурсах? |
|
Grigoriy |
Отправлено: 10.12.2005, 22:14 |
|
Мастер участка
Группа: Участник
Сообщений: 381
|
Вот как бы сделал я...
CODE |
const A=23;//Фиксированная граница первого измерения
const B=78;//Фиксированная граница второго измерения
AnsiString* S[A][B];/*Двумерный Массив указателей на одномерные массивы объектов AnsiString*/
//........
S[12][45]=new AnsiString [7];/*Выделим, например, память для нескольких объектов (7 объектов), на которую ссылается указатель S[12][45]*/
//........//Использование памяти
AnsiString w;
char dd;
w=S[12][45][7];/*Например такое использование — присвоение строки*/
dd=S[12][45][7][5];/*Присвоение символа*/
|
|
|
Георгий |
Отправлено: 11.12.2005, 14:57 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
вы шо творите?
CODE | #include <vector>
using namespace std;
vector< vector<vector < string> > > megaVector; | |
|
Smart |
Отправлено: 11.12.2005, 16:32 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 35
|
Сколько не напрягался, про мегавектор ничего не понял.
Наверное слабый мозк.
За идею с массивами указателей — спасибо, попробую.
И, может кому-нибудь интересно будет:
сравнил захват оперативки при инициализации AnsiString[10][20][100] и AnsiString[10][20][3000] — разницы никакой, пока массив не заполнишь. |
|
Георгий |
Отправлено: 12.12.2005, 00:31 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
что там понимать? берём банальный stl контейнер и используем |
|