0

配列を使用して大量のデータ(場合によっては100万を超えるデータポイント)を保持するコードがあります。配列は2方向に動的に定義でき、特定の位置に値を挿入できるため、配列を使用します。ただしRedim、配列の次元を変更するために使用すると、RAMに配列の複製が作成され、最終的にRAMが不足することがわかりました。Eraseアレイを削除してRAMを節約するために使用できることがわかりました。その後Redim、新しいアレイを作成するために使用できます。ただし、これは、2番目の配列を作成して手動でデータをコピーしない限り、その間にデータを保持する場所がないことを意味します。

RedimRAMを失うことなく、手動で新しいアレイにコピーして再度戻すのではなく、データを保持するためのより効率的な方法を使用して、アレイにアクセスする方法はありますか?または、上記の要件を満たす配列の代わりに、データを保持するために使用できる別のクラスがありますか。

必要に応じてサンプルコードをお求めください。

助けてくれて本当にありがとうございます

4

1 に答える 1

1

このように配列を使用することは、メモリ効率があまり良くありません。

(Tの)リストを使用する方が良いでしょう理由のためにこの答えを見てください

この場合、クラスを使用して各データポイントを保持できます。(Tの)リストを使用すると、データ全体のコピーを作成せずに、リストの中央に挿入できます。

'Define your datapoint class
Private Class DataPoint
    Public Property X As Long
    Public Property Y As Long
    Public Sub New(ByVal X As Long, ByVal Y As Long)
        Me.X = X
        Me.Y = Y
    End Sub
End Class

'create and initialise the list
Dim MyDataPoints As New List(Of DataPoint)
'add some data to it
MyDataPoints.Add(New DataPoint(1, 2))
MyDataPoints.Add(New DataPoint(1, 2))
MyDataPoints.Add(New DataPoint(4, 3))
'Now insert a new datapoint at an arbitrary position in the list
MyDataPoints.Insert(2, New DataPoint(5, 6))
于 2012-11-08T08:45:47.590 に答える