asp 动态数组 提供Add、Insert、Remove、RemoveAt、Search等操作
发布时间:2023-10-28 09:54:27 所属栏目:Asp教程 来源:
导读:复制代码 代码如下:
Class Vector
Private vector_datas()
Private initial_capacity '初始化容量
Private capacity_increment '容量增量
Private element_count '元素数
Private max_capacity
Class Vector
Private vector_datas()
Private initial_capacity '初始化容量
Private capacity_increment '容量增量
Private element_count '元素数
Private max_capacity
复制代码 代码如下: Class Vector Private vector_datas() Private initial_capacity '初始化容量 Private capacity_increment '容量增量 Private element_count '元素数 Private max_capacity '总容量 Private Sub Class_Initialize() RemoveAll End Sub Public Function RemoveAll() element_count = 0 initial_capacity = 10 capacity_increment = 10 max_capacity = initial_capacity ReDim vector_datas(initial_capacity) End Function Public Property Get Count() Count = element_count End Property Public Property Get Capacity() Capacity = max_capacity End Property Public Property Get InitialCapacity() InitialCapacity = initial_capacity End Property Public Property Get CapacityIncrement() CapacityIncrement = capacity_increment End Property Public Default Property Get Item(index) If IsObject(vector_datas(index)) Then Set Item = vector_datas(index) Else Item = vector_datas(index) End If End Property Public Function Add(element) Call Insert(element_count, element) End Function Public Function Remove(element) Dim index index = Search(element) RemoveAt(index) Remove = index End Function Public Function RemoveAt(index) Dim i For i = index + 1 To element_count - 1 Step 1 Call InternalElement(i - 1, vector_datas(i)) Next element_count = element_count - 1 If max_capacity - capacity_increment > element_count Then max_capacity = max_capacity - capacity_increment ReDim Preserve vector_datas(max_capacity) End If End Function Public Function Search(element) Dim i For i = 0 To element_count - 1 Step 1 If vector_datas(i) = element Then Search = i Exit Function End If Next Search = -1 End Function Public Function Insert(index, element) If index > element_count Then Err.Raise 20903, "Vector", "Array Index Out Of Bounds.", "", 0 End If If element_count = 0 Then Call InternalElement(0, element) ElseIf index = element_count Then Call InternalElement(element_count, element) Else Dim i For i = element_count To index + 1 Step -1 Call InternalElement(i, vector_datas(i - 1)) Next Call InternalElement(index, element) End If element_count = element_count + 1 If element_count = max_capacity Then max_capacity = element_count + capacity_increment ReDim Preserve vector_datas(max_capacity) End If End Function Public Function SetElementAt(index, element) If index < 0 Or index > element_count - 1 Then Err.Raise 20903, "Vector", "Array Index Out Of Bounds.", "", 0 End If Call InternalElement(index, element) End Function Private Function InternalElement(index, element) On Error Resume Next If IsObject(element) Then Set vector_datas(index) = element Else vector_datas(index) = element End If If Err.Number <> 0 Then (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐