|
|
#1 |
|
Участник
|
Добрый день, уважаемые посетители форума
![]() Подскажите, пожалуйста, какими способами можно реализовать двумерный динамический массив на X++.
__________________
AX 3.0, Build #9.3 |
|
|
|
|
#2 |
|
Участник
|
Посмотрите в любую книгу по программированию на Х++, везде приводятся примеры.
Если кратко - представить двумерный массив через одномерный с помощью игр с индексами. Многие написали, думаю, обертки для этог - обычный класс. Может кто выложит сюда |
|
|
|
|
#3 |
|
Moderator
|
Книга Еременко, Шашкова - стр.76
|
|
|
|
|
#4 |
|
Участник
|
|
|
|
|
|
#5 |
|
MCITP
|
Я так понимаю ключевое слово в этом вопросе было "динамический"
__________________
Zhirenkov Vitaly |
|
|
|
|
#6 |
|
Участник
|
Class Array
|
|
|
|
|
#7 |
|
Участник
|
Встроенный массив а Аксапте - динамический, его размер можно не указывать при его определении и он может меняться во время выполнения. По-моему, это и есть определение динамического массива
|
|
|
|
|
#8 |
|
MCITP
|
Цитата:
chanchala Вы это имели ввиду в вопросе?
__________________
Zhirenkov Vitaly |
|
|
|
|
#9 |
|
MCITP
|
Ну т.е. понятно что как вариант можно взять с большим запасом, если ресурсов не жалко, но вряд ли это выход
__________________
Zhirenkov Vitaly |
|
|
|
|
#10 |
|
Участник
|
Ага, спасибочки. Если правильно поняла: "Чтобы было удобно, написать свой класс"
__________________
AX 3.0, Build #9.3 |
|
|
|
|
#12 |
|
Участник
|
Цитата:
Сообщение от ZVV
НУ может я что-то недопонял, но если вы определяете массив как пишется в книжках и обращаетесь arr[y*N+x+1] (как в примере выше), то у вас уже забито, что размерность массива N*M. Если вы вдруг заходите чтоб этот массив стал (N+2)*(M+4), то вам придётся перестраивать весь массив. Или я не прав?
chanchala Вы это имели ввиду в вопросе?
__________________
AX 3.0, Build #9.3 |
|
|
|
|
#13 |
|
MCITP
|
Цитата:
![]() Можете почерпнуть многое оттуда....
__________________
Zhirenkov Vitaly |
|
|
|
|
#14 |
|
MCITP
|
Цитата:
если как вы говорите Цитата:
но и могут меняться уже после того, как станут известны с последующим удалением соответствующих "строк" и "столбцов".
Проблемы то возникнут только при добавлении, причём именно столбцов.
__________________
Zhirenkov Vitaly |
|
|
|
|
#15 |
|
Участник
|
Цитата:
|
|
|
|
|
#16 |
|
MCITP
|
Цитата:
Если строки или столбцы будут удаляться только с конца, то проблем вообще никаких. Если же, как в вашем варианте, из середины, тогда некоторые проблемы конечно будут, а именно придётся как-то дополнительно хранить "живые" индексы (ну или "неживые"). Но это тоже несложно реализуемый технический вопрос. Вот что я имел ввиду...
__________________
Zhirenkov Vitaly |
|
|
|
|
#17 |
|
MCITP
|
т.е. в формуле
Цитата:
arr[y*N+x+1]
__________________
Zhirenkov Vitaly |
|
|
|
|
#18 |
|
Moderator
|
С такими матричными задачками - надо в Excel, в клеточки! Ну или в Spreadsheet. И там удаляй - не хочу, добавляй - не хочу, транспонируй как хочется. Подумать не успеешь - как всё само перестроится.
|
|
|
|
|
#19 |
|
MCITP
|
Цитата:
Цитата:
))
__________________
Zhirenkov Vitaly |
|
|
|
|
#20 |
|
Участник
|
Цитата:
X++: Map m = new Map(Types::Container, Types::Anytype) ; m.insert([i,j], _value)
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
|
|
| За это сообщение автора поблагодарили: Gustav (2). | |
| Теги |
| array, массив |
|
|
|