asp 动态数组 提供Add、Insert、Remove、RemoveAt、Search等方法。

来源:asp之家 时间:2011-03-17 11:10:00 

代码如下:


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 
MsgBox("Vector InternalElement Error: " & vbCrLf & "Error Source: " & Err.Source & vbCrLf & "Error Number: " & Err.Number & vbCrLf & "Error Description: " & Err.Description & vbCrLf) 
Err.Clear '清除错误信息 
End If 
End Function 

Private Sub Class_Terminate() '类销毁 
Erase vector_datas '释放数组占用的内存, 將每個元素都設為 Nothing 
initial_capacity = Empty 
capacity_increment = Empty 
element_count = Empty 
max_capacity = Empty 
End Sub 

End Class 
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/o1o2o3o4o5/archive/2009/10/20/4703033.aspx

标签:asp,动态数组
0
投稿

猜你喜欢

  • Python 文件操作方法总结

    2023-11-29 11:36:28
  • Python真题案例之最长回文子串 周期串详解

    2021-12-01 02:57:02
  • Microsoft JET Database Engine 错误 '80040e21' 所有记录中均未找到搜索关键字

    2009-08-30 13:07:00
  • JavaScript导出Excel实例详解

    2023-09-06 15:51:27
  • Python3enumrate和range对比及示例详解

    2021-02-05 02:11:47
  • python二叉树类以及其4种遍历方法实例

    2023-07-25 02:22:48
  • Mysql中LAST_INSERT_ID()的函数使用详解

    2024-01-16 06:50:32
  • sql如何删除数据库中数据记录

    2008-10-09 12:31:00
  • Python包argparse模块常用方法

    2023-04-03 13:30:58
  • W3C优质网页小贴士(一)

    2008-04-06 16:35:00
  • 如何用python 操作MongoDB数据库

    2024-01-27 16:53:10
  • JavaScript省市级联下拉菜单实例

    2024-04-10 16:18:18
  • python神经网络VGG16模型复现及其如何预测详解

    2022-10-16 06:59:15
  • Vue mock.js模拟数据实现首页导航与左侧菜单功能

    2024-05-09 09:51:57
  • MySQL身份认证漏洞 升级到5.5.24可修正

    2012-07-11 15:54:09
  • 分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]

    2024-04-25 13:09:11
  • Go语言学习之goroutine详解

    2024-03-25 02:45:56
  • python 运算符 供重载参考

    2021-01-20 01:15:45
  • CMS不要让MySQL为你流泪

    2008-12-11 14:38:00
  • 扩展性很好的一个分页存储过程分享

    2011-11-03 17:04:16
  • asp之家 网络编程 m.aspxhome.com