我在一本书中读过这篇文章并且正在粘贴文本。我拍了一张截图但没有足够的声誉......
序列
您可以通过添加要求来优化基本容器概念 序列是一个重要的改进因为几个STL 容器类型-deque,forward_list(C ++ 11),list,queue, priority_queue,stack和vector-are序列。 (回想一下队列 允许元素在后端添加并从中移除 前端。由deque代表的双端队列允许添加和 两端移除。)迭代器至少为a的要求 forward iterator保证元素排列在一个 确定的顺序,不会从一个迭代循环变为 下一个。数组类也被归类为序列容器, 虽然它不能满足所有要求。序列也 要求其元素按严格的线性顺序排列。也就是说, 有第一个元素,有一个最后一个元素,每个元素 但是第一个和最后一个在其前面恰好有一个元素 紧跟在它之后的一个元素。数组和链表是 序列的例子,而分支结构(其中每个 节点指向两个子节点)不是。
因为序列中的元素具有明确的顺序,所以操作如 在特定位置插入值并擦除特定位置 范围变得可能。表16.7列出了这些和其他操作 序列必需。表使用与表相同的表示法 16.5,添加了表示类型T的值的t,即存储在容器中的值的类型,n,整数和p, q,i和j,代表迭代器。
第二段的开头,它表示序列有一定的维持顺序,因此插入和删除元素可能。不会破坏维持某个订单的整个过程吗?请帮忙。这让我很生气。感谢。
答案 0 :(得分:4)
有些容器是有序的,有些是分类的,有些是两种,有些则不是。例如:
std::list
和std::vector
已订购,但未排序(除非您不愿意这样做)。
std::map
和std::set
已排序且已订购。
std::unordered_map
和std::unordered_set
无序和未排序(基本上是哈希地图)
插入,删除,推送,弹出等功能都考虑了这些容器要求。对于已分类的容器,insert必须确保元素插入正确的位置,并根据需要调整其余元素。
必须对序列进行排序,但不一定要排序。
因此,当您说要在索引e
处插入元素i
时,该概念仅对有序容器有意义,因为无序容器没有索引或位置的概念。
你需要注意的一件事是(如果你有一个容器的迭代器,通常修改容器(插入,删除等)可能会使该迭代器无效,这会带来像{ {3}}
这是一个(有点不完整的)图表,显示了各种C ++标准库容器的属性。
创建的答案 1 :(得分:0)
在序列中插入元素需要将您想要放置它的位置作为参数(擦除相同),
为了{" i
位置"有道理,应该有一个订单
一定不要混淆有序排序...排序我们需要一个比较器,有序也可能意味着索引(我认为)
顺序:4 5 2被命令,4先到先,然后是5然后是2 并且序列5 2 4也是有序的