第9章 顺序容器(3)

9.2 迭代器和迭代器范围

与容器类型一样,所有迭代器具有相同的接口:如果某种迭代器支持某种操作,那么支持这种操作的其他迭代器也会以相同的方式支持这种操作。

	*iter
	iter -> mem
vector和deque容器的迭代器提供额外的运算

只有vector和deque容器提供下面几种重要的运算集合:迭代器算术运算,以及使用除了==和!=之外的关系操作符来比较两个迭代器(==和!=这两种关系运算适用于所有容器)。

关系操作符只适用于vector和deque容器,这是因为只有这两种容器为其元素提供快速、随机的访问。它们确保可根据元素位置直接有效地访问指定的容器关系。这两种容器都支持通过元素位置实现的随机访问,因此它们的迭代器都可以有效地实现算术和关系运算。

list容器既不支持算术运算,也不支持关系运算,它只提供前置和后置的自增、自减运算以及相等(不等)运算。

9.2.1 迭代器范围

C++语言使用一对迭代器标记迭代器范围(iterator range),这两个迭代器分别指向同一个容器中的两个元素或超出末端的下一位置,通常我们将它们命名为first和last,或beg和end,用于标记容器中的一段元素范围。

尽管last和end这两个名字很常见,但是它们却容易引起误解。其实第二个迭代器从来都不是指向元素范围的最后一个元素,而是指向最后一个元素的下一个位置。该范围内的元素包括迭代器first指向的元素,以及从first开始一直到迭代器last指向的位置之前的所有元素。如果两个迭代器相等,则迭代器范围为空。

迭代器first和last如果满足以下条件,则可形成一个迭代器范围:

  • 它们指向同一个容器中的元素或超出末端的下一位置。
  • 如果两个迭代器不相等,则对first反复做自增运算必须能够到达last。换句话说,在容器中,last绝对不能位于first之前。
假设first和last标记了一个有效的迭代器范围,于是:

  • 当first与last相等时,迭代器范围为空;
  • 当first与last不相等时,迭代器范围至少有一个元素,而且first指向该区间中的第一个元素。此外,通过若干次自增运算可以使first的值不断增大,直到first==last为止。
9.2.2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值