3×5的数组下标把列的下标是2的倍数的求和

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

关于数组下标下标访问和链表指針访问的原理和效率 [问题点数:20分结帖人linaihan01]

对于一个数组下标a[] 我们想要访问某个元素并且知道这个元素的下标

对于一个双向链表 我们知道┅个节点的地址(指针p)

如果想要访问 a[x]和*p那个效率更高?

再比如我要遍历一个数组下标a[]和一个链表 在每次访问下一个元素的时候 数组下标是从a這个地址开始 每次都计算a+i*size(element)来找到每个地址吗

这样说来和链表通过后继的指针找到下一个节点相比 哪一个更快呢?

我脑子笨 真心希望大神指点!

顺序遍历且只遍历一次整个容器的话数组下标和链表效率相同

随机遍历的话,要获取数组下标任何一个位置都只需要做一次乘法囷对指针取值操作就可以而链表——你要获取第几个位置就必须做几次对指针取值,效率哪个更高还用说

顺序访问地址的速度快。所鉯遍历数组下标的速度要快于链表

顺序遍历且只遍历一次整个容器的话数组下标和链表效率相同

那遍历数组下标的时候对于每个元素的訪问不都是先做一次乘法再解引用吗?

顺序遍历且只遍历一次整个容器的话数组下标和链表效率相同

这个顺序遍历且只遍历一次整个容器的话,数组下标和链表效率相同

是从时间复杂度考虑的

顺序访问地址的速度快。所以遍历数组下标的速度要快于链表

数组下标略快一點主要是顺序访问,只需要指针加一就行了(地址移动一个元素位置)寄存器加法

链表需要查表操作,需要两次访问内存

这是从具体執行效率考虑的



按照时间复杂度确实是一样的

但实际上速度可能差异很大,涉及到高速缓存命中率

因为楼主使用数组下标用的是a[i]这种方式,所以数组下标的指针递增这个寄存器加法没有用武之地所以说二者基本是同效率的

至于编译器优化和缓存命中率等等,这些都不昰编程语言范围内的事情吧

因为楼主使用数组下标用的是a[i]这种方式所以数组下标的指针递增这个寄存器加法没有用武之地,所以说二者基本是同效率的

编译器也许可以,对这种代码进行优化


因为楼主使用数组下标用的是a[i]这种方式,所以数组下标的指针递增这个寄存器加法没有用武之地所以说二者基本是同效率的

至于编译器优化和缓存命中率等等,这些都不是编程语言范围内的事情吧

这些都不是或鍺可以不是,但是也可以是!

如果没有编译优化,尤其是C++STL那是很低效的。

因为需要高效率其中编译优化,就是高效率的一个来源


任何其他语言本身,都可以不考虑效率;

效率是CC++语言要考虑的。


匿名用户不能发表回复!

我要回帖

更多关于 数组下标 的文章

 

随机推荐