插入和删除序列C ++

时间:2015-06-18 13:21:32

标签: c++ containers sequences concept

我在一本书中读过这篇文章并且正在粘贴文本。我拍了一张截图但没有足够的声誉......

  

序列

     

您可以通过添加要求来优化基本容器概念   序列是一个重要的改进因为几个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,代表迭代器。

第二段的开头,它表示序列有一定的维持顺序,因此插入和删除元素可能。不会破坏维持某个订单的整个过程吗?请帮忙。这让我很生气。感谢。

2 个答案:

答案 0 :(得分:4)

有些容器是有序的,有些是分类的,有些是两种,有些则不是。例如:

std::liststd::vector 已订购,但未排序(除非您不愿意这样做)。

std::mapstd::set 已排序已订购

std::unordered_mapstd::unordered_set 无序未排序(基本上是哈希地图)

插入,删除,推送,弹出等功能都考虑了这些容器要求。对于已分类的容器,insert必须确保元素插入正确的位置,并根据需要调整其余元素。

必须对序列进行排序,但不一定要排序。

因此,当您说要在索引e处插入元素i时,该概念仅对有序容器有意义,因为无序容器没有索引或位置的概念。

你需要注意的一件事是(如果你有一个容器的迭代器,通常修改容器(插入,删除等)可能会使该迭代器无效,这会带来像{ {3}}

这是一个(有点不完整的)图表,显示了各种C ++标准库容器的属性。

C++ Standard Library Container Flow Charterase-remove idiomDavid Moore

创建的

答案 1 :(得分:0)

在序列中插入元素需要将您想要放置它的位置作为参数(擦除相同),

为了{" i位置"有道理,应该有一个订单

一定不要混淆有序排序...排序我们需要一个比较器,有序也可能意味着索引(我认为)

顺序:4 5 2被命令,4先到先,然后是5然后是2        并且序列5 2 4也是有序的

相关问题