Динамический массив ASP предоставляет методы Add, Insert, Remove, RemoveAt, Search и другие. Объекты можно хранить в массивах, не принимая во внимание вопросы эффективности . Скопируйте код следующим образом:
Вектор класса
Частные векторные_данные()
Private Initial_capacity 'Емкость инициализации
Private емкость_increment 'Приращение емкости
Private element_count 'Количество элементов
Private max_capacity 'общая емкость
Частный подкласс_Initialize()
Удалить все
Конец субтитра
Открытая функция RemoveAll()
element_count = 0
начальная_емкость = 10
емкость_инкремент = 10
максимальная_емкость = начальная_емкость
ReDim векторные_данные (начальная_емкость)
Конечная функция
Публичная собственность Get Count()
Количество = количество_элементов
Конечная собственность
Открытая собственность Получить емкость()
Емкость = максимальная_емкость
Конечная собственность
Открытое свойство GetInitialCapacity()
Начальная емкость = начальная_емкость
Конечная собственность
Открытая собственность Получить емкостьинкремента ()
ЕмкостьИнкремент = Емкость_инкремент
Конечная собственность
Открытое свойство по умолчанию Получить элемент (индекс)
Если IsObject(vector_datas(index)) Тогда
Установить элемент = вектор_данные (индекс)
Еще
Элемент = векторные_данные (индекс)
Конец, если
Конечная собственность
Открытая функция Add(элемент)
Вызов Insert(element_count, element)
Конечная функция
Открытая функция Remove(элемент)
Тусклый индекс
индекс = Поиск (элемент)
УдалитьАт(индекс)
Удалить=индекс
Конечная функция
Открытая функция RemoveAt(индекс)
Дим я
Для i = index + 1 Для element_count - 1 Шаг 1
Вызов InternalElement(i - 1, Vector_datas(i))
Следующий
количество_элементов = количество_элементов - 1
Если максимальная_емкость - приращение_емкости > количество_элементов Тогда
максимальная_емкость = максимальная_емкость - приращение_емкости
ReDim Сохранение векторных данных (max_capacity)
Конец, если
Конечная функция
Поиск общедоступной функции (элемент)
Дим я
Для i = 0 Для element_count - 1 Шаг 1
Если вектор_данные(i) = элемент Тогда
Поиск = я
Выход из функции
Конец, если
Следующий
Поиск = -1
Конечная функция
Открытая функция Insert(индекс, элемент)
Если индекс > element_count Тогда
Err.Raise 20903, вектор, индекс массива за пределами., , 0
Конец, если
Если element_count = 0 Тогда
Вызов InternalElement(0, элемент)
ИначеЕсли индекс = element_count Тогда
Вызов InternalElement(element_count, element)
Еще
Дим я
Для i = element_count Для индекса + 1 Шаг -1
Вызов InternalElement(i,vector_datas(i - 1))
Следующий
Вызов InternalElement(индекс, элемент)
Конец, если
количество_элементов = количество_элементов + 1
Если element_count = max_capacity Тогда
максимальная_емкость = количество_элементов + приращение_емкости
ReDim Сохранение векторных_данных (max_capacity)
Конец, если
Конечная функция
Открытая функция SetElementAt(индекс, элемент)
Если индекс < 0 Или индекс > element_count - 1 Тогда
Err.Raise 20903, вектор, индекс массива за пределами., , 0
Конец, если
Вызов InternalElement(индекс, элемент)
Конечная функция
Частная функция InternalElement(индекс, элемент)
При ошибке Возобновить Далее
Если IsObject(элемент) Тогда
Установить вектор_данные (индекс) = элемент
Еще
векторные_данные (индекс) = элемент
Конец, если
Если Номер ошибки <> 0 Тогда
MsgBox (Ошибка внутреннего элемента вектора: & vbCrLf & Источник ошибки: & Err.Source & vbCrLf & Номер ошибки: & Err.Number & vbCrLf & Описание ошибки: & Err.Description & vbCrLf)
Err.Clear 'Очистить информацию об ошибке
Конец, если
Конечная функция
Private Sub Class_Terminate() 'Уничтожение класса
Erasevector_datas 'Освободите память, занятую массивом, и установите для каждого элемента значение Nothing
начальная_емкость = Пусто
емкость_инкремент = Пусто
element_count = Пусто
max_capacity = Пусто
Конец субтитра
Конечный класс
Эта статья взята из блога CSDN. При перепечатке указывайте источник: http://blog.csdn.net/o1o2o3o4o5/archive/2009/10/20/4703033.aspx.