如何快速相加数组?

ttyp 2002-03-22 09:33:18
Dim a(0 To 1000) As Byte

Dim b(0 To 1000) As Byte

Dim c(0 To 2000) As Byte

要实现
c = a + b
...全文
97 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Garriot 2002-03-26
  • 打赏
  • 举报
回复
你copymemory copy错了,应该是
CopyMemory c(1), a(1), Len(a(1)) * 2
CopyMemory c(3), b(1), Len(b(1)) * 2
可以加分了吧?
ttyp 2002-03-25
  • 打赏
  • 举报
回复

Dim a(1 To 2) As Byte
Dim b(1 To 2) As Byte
Dim c(1 To 4) As Byte

a(1) = 1
a(2) = 2

b(1) = 3
b(2) = 4

c(1) = 5
c(2) = 6

CopyMemory c(1), a(1), Len(a(1)) * 2
CopyMemory c(2), b(1), Len(b(1)) * 2

Stop
End Sub


结果:

c(1) =1
c(2) =3
c(3) =4
c(4) =0

不对
Garriot 2002-03-23
  • 打赏
  • 举报
回复
为什么不给分!!
Garriot 2002-03-22
  • 打赏
  • 举报
回复
我有一个我认为最快的办法:直接内存拷贝
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Sub Command1_Click()

Dim a(1 To 1000) As Byte
Dim b(1 To 1000) As Byte
Dim c(1 To 2000) As Byte

CopyMemory c(1), a(1), Len(a(0)) * 1000
CopyMemory c(1001), b(1), Len(b(1)) * 1000

End Sub
注意:a,b,c三个数组的类型一定要相同;一定要弄准a,b,c三个数组的个数及分界点,以免拷贝错误。
我想不到还有比这个更快的办法,给分吧。
如果调试有误,可以在QQ(4822210)上给我留言,以作进一步探讨.
enmity 2002-03-22
  • 打赏
  • 举报
回复
参考:

Public Sub MergeAnyArray(ByRef vArraySource As Variant, ByRef vArrayDest As Variant, Optional ByVal iPos As Long = -1)
Dim i As Long
Dim iLBound As Long
Dim iUBound As Long
Dim iUBound2 As Long
Dim iTemp As Long

If (Not IsArray(vArraySource)) Or (Not IsArray(vArrayDest)) Then Exit Sub

iLBound = LBound(vArraySource)
iUBound = UBound(vArraySource)
iUBound2 = UBound(vArrayDest)
iTemp = iUBound - iLBound + 1

If (iPos > UBound(vArrayDest) + 1) Or (iPos = -1) Then iPos = UBound(vArrayDest) + 1
If iPos < 0 Then iPos = 0

ReDim Preserve vArrayDest(LBound(vArrayDest) To UBound(vArrayDest) + iTemp)
For i = iUBound2 To iPos Step -1
vArrayDest(i + iTemp) = vArrayDest(i)
Next i

iUBound = iPos + iTemp - 1

For i = iPos To iUBound
vArrayDest(i) = vArraySource(i - iPos)
Next i

Erase vArraySource
End Sub
gpo2002 2002-03-22
  • 打赏
  • 举报
回复
doevents
ttyp 2002-03-22
  • 打赏
  • 举报
回复
数组太大了就很慢啊:(
Arcan 2002-03-22
  • 打赏
  • 举报
回复
gz
zyl910 2002-03-22
  • 打赏
  • 举报
回复
只有用循环!
没有其它方法!

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧