看林锐的书的疑问:随机访问 & 顺序访问

方紫涵 2012-12-24 10:27:43
看林锐的书的疑问

1)随机访问就是可以通过恒定的算术运算来得到任意元素的内存地址的访问方法://可以简单说明下如何得到任意元素的地址阿?


2)c/c++的内置数组和vector都是既可以随机访问又可以顺序访问的容器 //如何做到的?感觉他们都是连续存春的,只能顺序访问阿,怎么个随机法?
...全文
267 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
To-Big_Fish 2015-06-05
  • 打赏
  • 举报
回复
只有连续存储才能随机访问? 你确定么一楼?
赵4老师 2012-12-24
  • 打赏
  • 举报
回复
VS IDE中,在不明白的符号上点鼠标右键,选转到定义。 源码面前,了无秘密。
kingdom_0 2012-12-24
  • 打赏
  • 举报
回复
顺序访问、随即访问要看具体的容器的设计结构 无论哪种访问方式,都是找到元素的内存地址而实现访问的
  • 打赏
  • 举报
回复
随机访问如:数组头的地址为0x0001ff,那么访问第12个元素的地址的地址就是0x0001ff+11*sizeof(类型),一下子可以获取地址的都可以。
dhdahai 2012-12-24
  • 打赏
  • 举报
回复
1、比如数组int a[10]我就可以通过a[n]访问任一成员 2、个人理解,只有连续存储,才可以随机访问,如数组、vector。像list就没法随机访问
zilaishuichina 2012-12-24
  • 打赏
  • 举报
回复
不连续的内存也可以随机访问吧 比如hash 主要还是看你容器的组织方式 能不能根据一个公式计算一个元素的地址,如果可以,就算物理内存不连续,也可以随机访问
引用 5 楼 xwhbwas2008 的回复:
引用 1 楼 dhdahai 的回复:1、比如数组int a[10]我就可以通过a[n]访问任一成员 2、个人理解,只有连续存储,才可以随机访问,如数组、vector。像list就没法随机访问 非常 感谢你的回复。 可以告诉我下: 关于2 我也是这么认为的。可是我不知道为什么list就无法随机访问? 为什么说只有连续存储 才可以随机访问?
疯狂的红豆 2012-12-24
  • 打赏
  • 举报
回复
我再把自己想到的说一下吧,不知道有没有用。举例子:数组,当你写下ins[4];的时候,编译器会获得数组名a的地址,然后通过存储的类型知道每个元素的字节数,然后将指针跳到该元素的位置上,取出元素。这是数组的工作原理。再来说List<T>吧,这种结构的中文翻译是链表,所谓链表就是把很多不连续的单一的空间通过某种方式链接起来的成为一个顺序的。这里用到的方式就是指针方式。他是不能通过给定的某一个地址而计算得到另一个元素的地址的。STL中很多容器是基于数组来实现的,比如可变长的vector,他就是一个基于数组实现的。
wangwenwen 2012-12-24
  • 打赏
  • 举报
回复
引用 5 楼 xwhbwas2008 的回复:
引用 1 楼 dhdahai 的回复: 1、比如数组int a[10]我就可以通过a[n]访问任一成员 2、个人理解,只有连续存储,才可以随机访问,如数组、vector。像list就没法随机访问 非常 感谢你的回复。 可以告诉我下: 关于2 我也是这么认为的。可是我不知道为什么list就无法随机访问? 为什么说只有连续存储 才可以随机访问?
对于list,比如你要访问第11个节点,你不能直接计算出第11个节点的地址,必须遍历前面的才可以找到。 随机访问不仅要连续存储,还要类型相同。
方紫涵 2012-12-24
  • 打赏
  • 举报
回复
引用 1 楼 dhdahai 的回复:
1、比如数组int a[10]我就可以通过a[n]访问任一成员 2、个人理解,只有连续存储,才可以随机访问,如数组、vector。像list就没法随机访问
非常 感谢你的回复。 可以告诉我下: 关于2 我也是这么认为的。可是我不知道为什么list就无法随机访问? 为什么说只有连续存储 才可以随机访问?

64,662

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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