| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2678 人关注过本帖
标题:求助!!如何用一次操作,修改所有数组元素的值
只看楼主 加入收藏
William1949
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:111
专家分:0
注 册:2009-3-17
结帖率:63.64%
收藏
 问题点数:0 回复次数:16 
求助!!如何用一次操作,修改所有数组元素的值
例如:有一个数组(ARR):
Dim ARR(80000) As Long
ARR(0) = 1
ARR(1) = 2
ARR(2) = 3
...
...
ARR(N) = N

用什么方法可以一次性的给数组的每个元素都加5?
我可以用循环来实现:
For p = LBound(ARR) To UBound(ARR)
    ARR(p) = ARR(p) + 5
Next

但是这种方法很慢,每次执行,都要循环80000次,有没有快速的方法,一次性的给所有的元素都加一个值
搜索更多相关主题的帖子: 元素 
2010-03-15 11:49
haigecnpeng
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:261
专家分:510
注 册:2008-10-6
收藏
得分:0 
到用的时候再加好了

都说到了.net年代,VB与C#都是一样的!
但为什么招聘的都是C#呢?
2010-03-15 12:59
William1949
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:111
专家分:0
注 册:2009-3-17
收藏
得分:0 
以下是引用haigecnpeng在2010-3-15 12:59:38的发言:

到用的时候再加好了

谢谢您的回复!!!

我的意思是这样的:
For p = LBound(ARR) To UBound(ARR)
    ARR(p) = ARR(p) + 5
Next
上面的代码是嵌套在其它循环中,外层还有若干次的循环,导致程序执行到这里时,都要再次的重复80000次,最终使得整个过程执行效率很慢,我想问有没有办法,让其一次性给所有元素,都加一个值;
2010-03-15 13:10
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:0 
一定要都加上去吗?
2010-03-15 13:38
William1949
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:111
专家分:0
注 册:2009-3-17
收藏
得分:0 
以下是引用bczgvip在2010-3-15 13:38:06的发言:

一定要都加上去吗?
版主,您好!!!

是的,都加上去,但外层循环控制着每次相加的数,如:
第一次循环:ARR(p) = ARR(p) + 5
第二次循环:ARR(p) = ARR(p) + 7
第三次循环:ARR(p) = ARR(p) + 4
... ...
... ...

我想问:有没有类似于COPYMemory,或是其它方法可以实现?
2010-03-15 13:55
Dev1il
Rank: 2
等 级:论坛游民
帖 子:36
专家分:45
注 册:2010-3-15
收藏
得分:0 
你这貌似全部输出的都是 5 7 4 样,怎么使app(i+1)=app(i)+5啊,我是个新手,但这样写要发生越界现象
2010-03-15 14:22
William1949
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:111
专家分:0
注 册:2009-3-17
收藏
得分:0 
以下是引用Dev1il在2010-3-15 14:22:36的发言:

你这貌似全部输出的都是 5 7 4 样,怎么使app(i+1)=app(i)+5啊,我是个新手,但这样写要发生越界现象
不是app(i+1)=app(i)+5
而是app(i)=app(i)+5
不会有越界现象。
至于5,7,4,我只是举例说明,实际上,它是在外层循环中,通过其它代码的运行而得到的。
我的问题的重点是要数组中各个元素都加上相同的数
还有,我在一楼中举的例子是:
Dim ARR(80000) As Long
ARR(0) = 1
ARR(1) = 2
ARR(2) = 3
...
...
ARR(N) = N '(给元素赋初值,是顺序递增的,但实际情况是无顺的)
2010-03-15 14:43
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
只能这样加啊.如果你要追求这里的运算速度,那只能不要使用 VB 了.

VB 编译成 机器代码后, 你还认为这样执行慢了,那自然没办法.

循环里,如果需要加快执行速度 .使用如下方案进行优化.

1\少用函数,特别是VB内置函数.自己定义的函数,比 VB 内置函数所需要的额外开销要小.但自己的定义的
2\少用变体类型的变量 ,尽量多用 long 类型的变量
3\如果有几个地方引用某个属性,或几个地方使用某个计算结果,尽量用变量保存属性或结果,然后使用变量.


授人于鱼,不如授人于渔
早已停用QQ了
2010-03-15 15:14
William1949
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:111
专家分:0
注 册:2009-3-17
收藏
得分:0 
谢谢回复!!!
看来只能用循环了。

我原本想着数组有一种“矩阵”算法,
能实现:数组A = 数组B + 数组C
等同于:A(0) = B(0)+ C(0)
        A(1) = B(1)+ C(1)
        ...  ...
        ...  ...

看来,这种想法是错误的
谢谢,诸位的回复!!!
2010-03-15 15:50
冰雪天
Rank: 2
来 自:陕西咸阳
等 级:论坛游民
帖 子:60
专家分:34
注 册:2009-9-4
收藏
得分:0 
给数组每一元素赋一类至于4+ i这样的值,用代码改变i的值,这样可以吗?

我愛滑板!!!
2010-03-16 19:32
快速回复:求助!!如何用一次操作,修改所有数组元素的值
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017148 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved