![]() |
#5 |
Участник
|
0.
в алгоритме есть принципиальная ошибка - конейнер может содержать другие контейнеры. а также другие объекты, для которых отсутствует операция сравнения. поэтому ваш алгоритм имеет очень ограниченное применение. надо отдать должное функция less - прикольная. ![]() но потенциально опасна runtime-ошибками. 1. насколько я помню (пусть меня поправят знающие люди), контейнер - это атомарный объект в Аксапте. другими словами, при любой попытке изменения контейнера, фактически происходит пересоздание контейнера. со всеми вытекающими последствиями. насколько я помню, именно это и послужило причиной создания объектов-коллекций и причиной неразвития таких полезных структур как KeySum. 2. контейнер - чисто аксаптовская структура, для которой нет аналога ни на .net., ни в SQL, ни в OLAP... в связи с планами перевода всего и вся на .net, контейнеры будут все более более неприемлемым инструментом. поэтому:
================================= в связи с вышесказанным лучше: * преобразовать контейнер в объект-коллекцию, например в set, (при преобразовании выполните проверку) * (опционально для несортирующих коллекций) выполнить сортировку * преобразовать объект-коллекцию обратно в контейнер. причем в классе Global вроде уже есть функции преобразователи. и если содержимое контейнера вам заранее известно и не требует проверки и не содержит одинаковых элементов, то лучше вместо своего алгоритма вызвать пару функций, что-то вроде X++: myContainer = set2con(con2set(myContainer)); // сортируем контейнер, содержащий индексы Последний раз редактировалось mazzy; 11.01.2014 в 12:27. |
|