加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

asp 动态数组 提供Add Insert Remove RemoveAt Search等方式

发布时间:2023-07-08 13:34:43 所属栏目:Asp教程 来源:
导读:asp 动态数组 提供Add Insert Remove RemoveAt Search等方式:代码如下:Class VectorPrivate vector_datas()Private initial_capacity '初始化容量Private capacity_increment '容量增量Private element_cou

asp 动态数组 提供Add Insert Remove RemoveAt Search等方式:

代码如下:

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

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章