在c ++中,所有顺序容器的一个共同属性是可以顺序访问元素。 (维基)
为什么我们称数组为顺序容器,但访问数组元素却不是顺序地,例如正在访问array [0]会跳转到正在访问array [10]吗?
答案 0 :(得分:0)
底线:访问元素是随机的,但是存储是顺序的。
使用数组(出于参数考虑,它的长度为10个元素)在内存中每个元素都一个接一个地排列(即,它具有顺序存储的功能-就像大街上的门牌号码一样)。如果我需要参观街道上的第五座房子,我只需从街道开始算起五座房子,然后我就在那儿(这是随机通道)。
非随机访问将涉及诸如链表之类的数据结构。这种安排类似于将DVD借给朋友。您问您的朋友是否有DVD,原来是他借给Dave的,所以您访问了Dave,他告诉您Sue现在有了它,因此您访问了Sue,然后她将您发送到malcom,重复直到找到...
如果我们真的想要(说实话,99%的时间),我们最终将按顺序访问顺序容器...
for(auto&& item : items)
但是,如果我们愿意,我们可以随机访问它们:
items[rand() % items.size()]
要对链接列表执行相同的操作,我们必须从第一个朋友开始,然后在每个朋友之间旅行,直到找到列表中的第5个项目。