首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

VB6 數組拼接與下標重排:使用 MemoryCopy 高效實現下標前移

     編輯:程式設計疑難解答

場景

刪除數組中間段後,需將後段元素前移,使下標連續。

方法對比

方法適用場景代碼複雜度
循環賦值數據量小、類型復雜低
CopyMemory (RtlMoveMemory)大數據量、基本類型 (Long, Double 等)中
ReDim Preserve + 複製需動態縮小數組低

CopyMemory 示例

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Dest As Any, Source As Any, ByVal Length As Long)

Dim arr(1 To 100) As Long
' 刪除 30-40,將 41-100 前移到 31-90
Dim srcOffset As Long, dstOffset As Long, count As Long
srcOffset = 41: dstOffset = 31: count = 60
CopyMemory arr(dstOffset), arr(srcOffset), count * 4 ' 4 字節/Long
' 縮小數組
ReDim Preserve arr(1 To 90)

注意

  • CopyMemory 僅適用於定長數值類型數組,字符串、變體、對象數組不可用。
  • 內存重疊時 RtlMoveMemory 正確處理(同 memmove)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved