序列容器-元素只能按顺序访问
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了序列容器-元素只能按顺序访问相关的知识,希望对你有一定的参考价值。
到处都有声明,所有顺序容器的共同属性是元素可以顺序访问。但是我们知道std::array
,std::vector
和std::deque
都支持对元素的快速随机访问。 std::list
支持双向迭代,而std::forward_list
仅支持单向迭代。
那么,实际上“按顺序访问”在这里意味着什么?
答案
顺序访问与随机访问或迭代器无关。
例如,std::set
的迭代器是双向迭代器。您可以像遍历std::set
的元素一样遍历std::vector
的元素。
序列容器具有正反两面,并且所有元素都按照插入顺序介于它们之间。将其与std::set
进行对比,后者在概念上确实具有正反两面(最小值和最大值) ,但按比较功能定义的顺序存储其元素。还将其与std::unordered_set
进行比较,后者实际上没有正面和背面,而是按哈希函数确定的顺序存储其元素。最后,将其与std::stack
进行对比,后者仅具有顶部(概念上是背面,而没有正面)。
唯一具有正面和背面并按其插入顺序存储其元素的其他标准容器是std::queue
。但是,如果不访问和删除队列前面的所有元素,就无法访问队列中的任何任意元素。
因此,如果我必须给出一个序列容器的定义,它将具有顺序访问权限,这意味着可以按照插入它们的顺序访问其任何元素,而无需对其进行迭代即可。 >
不要与连续(或随机)访问混淆。
以上是关于序列容器-元素只能按顺序访问的主要内容,如果未能解决你的问题,请参考以下文章