请教VB一个数组复制的问题
比如数组A()和B(),如下:dima(1000000)assingledimb(1000000)assinglefori=0to999999a(i)=b(i)nexti...
比如数组A()和B(),如下:
dim a(1000000) as single
dim b(1000000) as single
for i=0 to 999999
a(i)=b(i)
next i
即想把b(i)里的数全部给a()。除了用上种循环,有没有更省时间的方法?还有,必须定义数组类型. 展开
dim a(1000000) as single
dim b(1000000) as single
for i=0 to 999999
a(i)=b(i)
next i
即想把b(i)里的数全部给a()。除了用上种循环,有没有更省时间的方法?还有,必须定义数组类型. 展开
4个回答
展开全部
如果你用的是VB6.0的话,那有一个相当简单的方法来完成数组复制操作。即使用VB6.0中提供的动态数组增强功能。
它的使用也很简单,首先是声明数组,然后是直接赋值。例如对于你上面的提供的代码,改为使用动态数组增强功能的话,代码如下:
Dim a() As Single '注意a数组必须是动态数组,如写为Dim a(1000000) As Single则错误
Dim b(1000000) As Single
Dim i As Integer
for i=0 to 999999
a(i)=b(i)
next i
a=b '直接赋值,够简单吧
必须注意的是,这里作为目的数组的a不能为固定数组(即在声明时就指定了大小的数组),否则会引发错误。
它的使用也很简单,首先是声明数组,然后是直接赋值。例如对于你上面的提供的代码,改为使用动态数组增强功能的话,代码如下:
Dim a() As Single '注意a数组必须是动态数组,如写为Dim a(1000000) As Single则错误
Dim b(1000000) As Single
Dim i As Integer
for i=0 to 999999
a(i)=b(i)
next i
a=b '直接赋值,够简单吧
必须注意的是,这里作为目的数组的a不能为固定数组(即在声明时就指定了大小的数组),否则会引发错误。
展开全部
想要快速的复制数组么?那就快用API函数CopyMemory吧。。。
哈哈,不好意思,做广告了。那么废话少说,源码:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Sub Command1_Click()
Dim A(10), B() As Integer
Dim I As Integer
For I = 0 To 10
A(I) = I
Next
ReDim B(UBound(A))
CopyMemory ByVal VarPtr(B(0)), ByVal VarPtr(A(0)), LenB(A(0)) * 11
For I = 0 To 10
Print B(I)
Next
End Sub
不再使用循环复制数组了,真的很慢很麻烦。
哈哈,不好意思,做广告了。那么废话少说,源码:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Sub Command1_Click()
Dim A(10), B() As Integer
Dim I As Integer
For I = 0 To 10
A(I) = I
Next
ReDim B(UBound(A))
CopyMemory ByVal VarPtr(B(0)), ByVal VarPtr(A(0)), LenB(A(0)) * 11
For I = 0 To 10
Print B(I)
Next
End Sub
不再使用循环复制数组了,真的很慢很麻烦。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
dim a1,a2
a1=array(1,2,3,4,5,6)
a2=a1
即可!
a1=array(1,2,3,4,5,6)
a2=a1
即可!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
dim a(1000000) as single
dim b(1000000) as single
dim c(1000000) as single
dim i%
if a(i)<>b(i) then
c(i)=a(i)
a(i)=b(i)
end if
dim b(1000000) as single
dim c(1000000) as single
dim i%
if a(i)<>b(i) then
c(i)=a(i)
a(i)=b(i)
end if
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询