asp 动态数组 提供Add、Insert、Remove、RemoveAt、Search等方法。
程序员文章站
2022-03-31 14:00:41
复制代码 代码如下:class vector private vector_datas() private initial_capacity '初始化容量 private...
复制代码 代码如下:
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
上一篇: 一句话解决AJAX中文乱码问题[推荐]
下一篇: 我妈酷爱打麻将