ASP 動的配列は、Add、Insert、Remove、RemoveAt、Search などのメソッドを提供します。効率の問題に関係なく、オブジェクトを配列に格納できる
次のようにコードをコピーします。
クラスベクトル
プライベートvector_datas()
PrivateInitial_capacity '初期化容量
プライベート Capacity_increment ' 容量の増分
Private element_count '要素数
プライベート max_capacity ' 合計容量
プライベートサブクラス_Initialize()
すべて削除
エンドサブ
パブリック関数 RemoveAll()
要素数 = 0
初期容量 = 10
容量増分 = 10
最大容量 = 初期容量
ReDim ベクトルデータ(初期容量)
終了機能
パブリック プロパティ Get Count()
カウント = 要素数
終了プロパティ
パブリック プロパティ Get Capacity()
容量 = max_capacity
終了プロパティ
Public プロパティ GetInitialCapacity()
InitialCapacity = 初期容量
終了プロパティ
Public プロパティ Get CapacityIncrement()
容量増分 = 容量_増分
終了プロパティ
パブリックデフォルトプロパティ GetItem(index)
IsObject(vector_datas(index)) の場合
項目を設定 = Vector_datas(index)
それ以外
項目 = ベクトルデータ(インデックス)
終了の場合
終了プロパティ
パブリック関数 Add(要素)
Insert(element_count, element) を呼び出す
終了機能
パブリック関数 Remove(要素)
薄暗いインデックス
インデックス = 検索(要素)
RemoveAt(インデックス)
削除=インデックス
終了機能
パブリック関数 RemoveAt(index)
ディムアイ
For i = インデックス + 1 To element_count - 1 ステップ 1
InternalElement(i - 1, Vector_datas(i)) を呼び出す
次
要素数 = 要素数 - 1
max_capacity - Capacity_increment > element_count の場合
max_capacity = max_capacity - Capacity_increment
ReDim Preserve Vector_datas(max_capacity)
終了の場合
終了機能
パブリック関数検索(要素)
ディムアイ
i = 0 から element_count - 1 まで ステップ 1
Vector_datas(i) = 要素の場合
検索 = i
終了関数
終了の場合
次
検索=-1
終了機能
パブリック関数 Insert(インデックス、要素)
インデックス > element_count の場合
Err.Raise 20903、「ベクトル」、「配列インデックスが範囲外です。」、「」、0
終了の場合
element_count = 0 の場合
InternalElement(0, 要素) を呼び出す
ElseIf インデックス = element_count then
InternalElement(element_count, element) を呼び出す
それ以外
ディムアイ
For i = element_count インデックスへ + 1 ステップ -1
InternalElement(i, Vector_datas(i - 1)) を呼び出す
次
InternalElement(インデックス, 要素) を呼び出す
終了の場合
要素数 = 要素数 + 1
element_count = max_capacity の場合
max_capacity = 要素数 + 容量増分
ReDim Preserve Vector_datas(max_capacity)
終了の場合
終了機能
パブリック関数 SetElementAt(インデックス, 要素)
インデックス < 0 またはインデックス > element_count - 1 の場合
Err.Raise 20903、「ベクトル」、「配列インデックスが範囲外です。」、「」、0
終了の場合
InternalElement(インデックス, 要素) を呼び出す
終了機能
プライベート関数 InternalElement(インデックス, 要素)
エラー時は次へ再開
IsObject(要素)の場合
Vector_datas(index) = 要素を設定します
それ以外
Vector_datas(インデックス) = 要素
終了の場合
Err.Number <> 0 の場合、次に
MsgBox("Vector InternalElement エラー: " & vbCrLf & "エラー ソース: " & Err.Source & vbCrLf & "エラー番号: " & Err.Number & vbCrLf & "エラーの説明: " & Err.Description & vbCrLf)
Err.Clear 'エラー情報をクリア
終了の場合
終了機能
Private Sub Class_Terminate() 'クラスの破壊
Erase Vector_datas '配列が占有しているメモリを解放し、各要素を何も設定しません
初期容量 = 空
容量増分 = 空
element_count = 空
max_capacity = 空
エンドサブ
終了クラス
この記事は CSDN ブログからのものです。転載する場合は出典を明記してください。