序列容器-元素只能按顺序访问

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了序列容器-元素只能按顺序访问相关的知识,希望对你有一定的参考价值。

到处都有声明,所有顺序容器的共同属性是元素可以顺序访问。但是我们知道std::arraystd::vectorstd::deque都支持对元素的快速随机访问。 std::list支持双向迭代,而std::forward_list仅支持单向迭代。

那么,实际上“按顺序访问”在这里意味着什么?

答案

顺序访问与随机访问或迭代器无关。

例如,std::set的迭代器是双向迭代器。您可以像遍历std::set的元素一样遍历std::vector的元素。

序列容器具有正反两面,并且所有元素都按照插入顺序介于它们之间。将其与std::set进行对比,后者在概念上确实具有正反两面(最小值和最大值) ,但按比较功能定义的顺序存储其元素。还将其与std::unordered_set进行比较,后者实际上没有正面和背面,而是按哈希函数确定的顺序存储其元素。最后,将其与std::stack进行对比,后者仅具有顶部(概念上是背面,而没有正面)。

唯一具有正面和背面并按其插入顺序存储其元素的其他标准容器是std::queue。但是,如果不访问和删除队列前面的所有元素,就无法访​​问队列中的任何任意元素。

因此,如果我必须给出一个序列容器的定义,它将具有顺序访问权限,这意味着可以按照插入它们的顺序访问其任何元素,而无需对其进行迭代即可。 >

不要与连续(或随机)访问混淆。

以上是关于序列容器-元素只能按顺序访问的主要内容,如果未能解决你的问题,请参考以下文章

之前学的小总结

C++容器

向量vector 容器浅析

关联容器

Vector原理及其用法

关联容器